Skip to content
HILLS API v1 Early access

API reference

Members

Your artists and labels: list them and invite new ones.

Your artists and labels: list them and invite new ones.

Base URL https://app.hillsmusic.com/api/v1. Every request sends an API key: Authorization: Bearer hm_live_… (production) or hm_test_… (sandbox).

  • List artists and labels
  • Invite an artist or label

List artists and labels

GET /api/v1/members · Scope: members:read · Sandbox keys see sandbox data only.

Every artist and label under your account, newest first, with how many releases each has (in the key’s environment).

Parameters

Parameter In Type Required Description
kind query artist | label No Only artists or only labels.

Example request

curl "https://app.hillsmusic.com/api/v1/members?kind=artist" \
  -H "Authorization: Bearer $HILLS_API_KEY"

Response 200

{
  "data": [
    {
      "id": 41,
      "email": "luna@example.com",
      "name": "Luna",
      "kind": "artist",
      "status": "active",
      "created_at": "2026-08-02T10:11:00Z",
      "last_login_at": null,
      "releases": 4
    }
  ]
}

Errors

Status When
400 invalid: a parameter is wrong; field names it.
401 unauthenticated, invalid_key, key_revoked or key_expired.
403 insufficient_scope: the key lacks the scope; scope names it. account_inactive or api_not_in_plan.
429 rate_limited: wait Retry-After seconds.

Invite an artist or label

POST /api/v1/members/invite · Scope: members:write · Sandbox keys are refused (403 not_in_sandbox).

Creates the account under yours and emails them a link (valid 7 days) to set their password. 409 if the email already has an account.

Request body

JSON.

Field Type Required Description
email string Yes Their email address.
fname string Yes First name, or the label’s name.
lname string No Last name.
kind artist | label Yes What they are.

Example request

curl -X POST "https://app.hillsmusic.com/api/v1/members/invite" \
  -H "Authorization: Bearer $HILLS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"luna@example.com","fname":"Luna","kind":"artist"}'

Response 201

{
  "ok": true,
  "id": 57
}

Errors

Status When
400 invalid: a parameter is wrong; field names it.
401 unauthenticated, invalid_key, key_revoked or key_expired.
403 insufficient_scope: the key lacks the scope; scope names it. account_inactive or api_not_in_plan. not_in_sandbox: a sandbox key (hm_test_…) can’t do this.
409 exists: There’s already an account with this email.
429 rate_limited: wait Retry-After seconds.

Ready to integrate?

Request API access and we get back to you within 1–3 business days.