Pular para o conteúdo
HILLS API v1 Acesso antecipado

Referência da API

Lançamentos

Seu catálogo: lançamentos com status, faixas e entrega plataforma por plataforma.

Seu catálogo: lançamentos com status, faixas e entrega plataforma por plataforma.

URL base https://api.hillsmusic.com/v1. Toda requisição envia uma chave de API: Authorization: Bearer hm_live_….

  • Listar lançamentos
  • Obter um lançamento

Listar lançamentos

GET /v1/releases · Escopo: catalog:read

Os lançamentos dos seus artistas e gravadoras, dos mais recentes para os mais antigos, 50 por página. Envie next_cursor de volta como cursor para a próxima página; ele é null na última.

Obsoleto: Os campos de status com os termos antigos (status nos lançamentos, stores[key].state em cada plataforma, status e previous_status nas respostas de simulate) serão removidos em 30 de abril de 2027. Em vez disso, use release_status e delivery_state para o lançamento, stores[key].status para cada plataforma e, nas respostas de simulate, release_status, delivery_state e previous_release_status. Até lá, as respostas trazem os headers Deprecation e Sunset. O que muda

Obsoleto: Os termos antigos do filtro status= (pending, rejected e distributed) deixarão de ser aceitos em 30 de abril de 2027. Em vez disso, use status=in_review, status=changes_requested e status=approved com delivery_state live ou partially_live na resposta. Até lá, as respostas em que a requisição filtra por um dos termos antigos trazem os headers Deprecation e Sunset. O que muda

Parâmetros

Parâmetro Em Tipo Obrigatório Descrição
status query draft | in_review | pending | changes_requested | rejected | approved | distributed | archived | taken_down Não Apenas este status de lançamento: draft, in_review, changes_requested, approved, archived ou taken_down. Aliases obsoletos, aceitos até 30 de abril de 2027: pending (in_review), rejected (changes_requested), distributed (approved e no ar em pelo menos uma plataforma).
cursor query string Não next_cursor da página anterior.
updated_since query data e hora ISO Não Alterados neste momento ou depois (para sincronização).
limit query integer (1–100) Não Tamanho da página (padrão 50).
member_id query integer Não Apenas os lançamentos deste artista ou gravadora.
upc query string Não UPC exato.
q query string Não Busca por título e artista.

Exemplo de requisição

curl "https://api.hillsmusic.com/v1/releases?status=approved&limit=20" \
  -H "Authorization: Bearer $HILLS_API_KEY"

Resposta 200

{
  "data": [
    {
      "id": 812,
      "title": "Midnight Run",
      "version": null,
      "type": "single",
      "status": "distributed",
      "release_status": "approved",
      "review_stage": null,
      "delivery_state": "partially_live",
      "update_state": "none",
      "stores_live": 12,
      "stores_total": 30,
      "live_at": "2026-10-05T10:12:00Z",
      "artists": "Luna",
      "featured_artists": null,
      "label": "Nova Records",
      "genre": "Pop",
      "upc": "0123456789012",
      "release_date": "2026-11-01",
      "cover_url": "/api/catalog/files/cover/…",
      "member_id": 41,
      "track_count": 1,
      "submitted_at": "2026-10-02T08:00:00Z",
      "created_at": "2026-09-30T08:00:00Z",
      "updated_at": "2026-10-03T08:00:00Z"
    }
  ],
  "next_cursor": "aWQ6ODEy"
}

Erros

Status Quando
400 invalid: um parâmetro está errado; field indica qual.
401 unauthenticated, invalid_key, key_revoked, key_expired ou test_keys_retired.
403 insufficient_scope: falta à chave o escopo; scope indica qual. account_inactive ou api_not_in_plan.
429 rate_limited: aguarde Retry-After segundos.

Obter um lançamento

GET /v1/releases/{id} · Escopo: catalog:read

Um lançamento com suas faixas e, por plataforma, seu status (ver Status), sua fase e seu link. status e stores[key].state mantêm os termos antigos até 30 de abril de 2027, quando são removidos; leia release_status, delivery_state e stores[key].status no lugar.

Obsoleto: Os campos de status com os termos antigos (status nos lançamentos, stores[key].state em cada plataforma, status e previous_status nas respostas de simulate) serão removidos em 30 de abril de 2027. Em vez disso, use release_status e delivery_state para o lançamento, stores[key].status para cada plataforma e, nas respostas de simulate, release_status, delivery_state e previous_release_status. Até lá, as respostas trazem os headers Deprecation e Sunset. O que muda

Parâmetros

Parâmetro Em Tipo Obrigatório Descrição
id path integer Sim O id do lançamento.

Exemplo de requisição

curl "https://api.hillsmusic.com/v1/releases/812" \
  -H "Authorization: Bearer $HILLS_API_KEY"

Resposta 200

{
  "data": {
    "id": 812,
    "title": "Midnight Run",
    "type": "single",
    "status": "distributed",
    "release_status": "approved",
    "delivery_state": "partially_live",
    "update_state": "none",
    "stores_live": 1,
    "stores_total": 2,
    "live_at": "2026-10-05T10:12:00Z",
    "upc": "0123456789012",
    "release_date": "2026-11-01",
    "member_id": 41,
    "tracks": [
      {
        "id": 2001,
        "disc_number": 1,
        "position": 1,
        "title": "Midnight Run",
        "isrc": "USRC17607839",
        "explicit": "not_explicit",
        "duration_ms": 201000
      }
    ],
    "stores": {
      "spotify": {
        "status": "live",
        "op": "insert",
        "phase": "done",
        "url": "https://open.spotify.com/album/…",
        "state": "live"
      },
      "apple_music": {
        "status": "delivered",
        "op": "insert",
        "phase": "done",
        "url": null,
        "state": "sent"
      }
    }
  }
}

Erros

Status Quando
401 unauthenticated, invalid_key, key_revoked, key_expired ou test_keys_retired.
403 insufficient_scope: falta à chave o escopo; scope indica qual. account_inactive ou api_not_in_plan.
404 not_found: não existe, ou não é seu.
429 rate_limited: aguarde Retry-After segundos.

Pronto para integrar?

Solicite acesso à API e retornamos em 1 a 3 dias úteis.