Developers

HumMatch Partner API

The HumMatch Partner API exposes the same vocal-range matching logic that powers hummatch.me: normalize a singer’s range or hum profile, score how well a specific catalog song fits it, and find shared-range song candidates for a small group. It is stateless: every call is a real-time computation over data you send us plus a read-only catalog lookup, nothing is stored on our side beyond the API key itself.

Plans

Sandbox Free
1,000 calls/month, 30 req/min.

Starter $49/mo
50,000 calls/month, 120 req/min.

Scale $199/mo
500,000 calls/month, 600 req/min. Contact us to start.

Higher volume, or licensing the vocal range database for your own catalog? Talk to us.

1. Get a sandbox key

No signup form, no approval wait. POST /api/v1/sandbox-key issues a key instantly. The full key is only ever shown in this one response, so save it right away.

curl -X POST https://hummatch.me/api/v1/sandbox-key \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","name":"Your Company"}'

Response:

{
  "apiKey": "hm_sandbox_3f9a1c2b7d8e4f5061a2b3c4d5e6f708",
  "keyPrefix": "hm_sandbox_3",
  "mode": "sandbox",
  "rateLimitPerMinute": 30
}

Every call below sends that key back as the X-API-Key header.

2. Normalize a vocal profile

POST /api/v1/vocal-profile turns a range (note names or MIDI numbers) into a normalized profile you can reuse in the next two calls.

curl -X POST https://hummatch.me/api/v1/vocal-profile \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{"rangeLow":"D3","rangeHigh":"C5"}'

3. Rank the whole catalog for that voice

POST /api/v1/recommendations is the endpoint most integrations want: one voice in, the catalog ranked for that voice out. You get a flat matcheslist plus the named buckets HumMatch itself uses, which carry meaning a flat list loses. A “risky pick to avoid” is not simply a low-scoring match.

curl -X POST https://hummatch.me/api/v1/recommendations \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{"rangeLow":"D3","rangeHigh":"C5","limit":12}'

4. Look up a song, or resolve a slug

GET /api/v1/songs/search searches by title or artist. Its main job is turning a song name into the catalog slug the next endpoint needs. Add a profile to score and rank every hit for a specific voice instead of by catalog relevance.

curl -G https://hummatch.me/api/v1/songs/search \
  -H "X-API-Key: $API_KEY" \
  --data-urlencode 'q=someone like you adele' \
  --data-urlencode 'profile={"rangeLow":"D3","rangeHigh":"C5"}'

5. Score a specific song against that profile

GET /api/v1/songs/{slug}/fittakes a real catalog slug and a URL-encoded profile, and returns a real match score plus the same “why it fits” explanation HumMatch shows on the site. This example uses a real slug from the live catalog, love-is-a-game-adele.

curl -G https://hummatch.me/api/v1/songs/love-is-a-game-adele/fit \
  -H "X-API-Key: $API_KEY" \
  --data-urlencode 'profile={"rangeLow":"D3","rangeHigh":"C5"}'

6. Find shared-range songs for a group

POST /api/v1/group-fittakes 2+ profiles and returns the group’s shared vocal range plus ranked candidate songs, using the same logic behind HumMatch’s SquadMatch feature, run entirely in-memory against the profiles you send. No group is created on our side.

curl -X POST https://hummatch.me/api/v1/group-fit \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{"profiles":[{"id":"singer-1","rangeLow":"C3","rangeHigh":"E4"},{"id":"singer-2","rangeLow":"A3","rangeHigh":"G5"}]}'

Using HumMatch from an AI agent

HumMatch runs a remote MCP server at https://hummatch.me/api/mcp, exposing the same engine as the REST endpoints above. It is stateless Streamable HTTP: POST JSON-RPC, no session to manage. Five read-only tools are available: recommend_songs, search_songs, check_song_fit, group_song_fit, and get_vocal_profile.

No API key is required to try it: keyless callers get the same free tier as the website, capped at the top 3 scored results and 5 scored lookups a day. Send your X-API-Key header to lift both.

curl -X POST https://hummatch.me/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

A compact, agent-readable reference lives at /api.md.

Also listed on HumMatch on Smithery.

Reading a range honestly

Every song we return carries rangeConfidence and rangeSource. Some ranges are measured from the original recording; others are derived from published sources. Those are not equally certain, and we would rather tell you than let you find out. When you surface a score to a person, keep the provenance attached.

Full API reference

Every endpoint, request/response schema, and more examples are documented as an OpenAPI 3.0 spec at /openapi.yaml. Import it directly into Postman, Insomnia, or any OpenAPI-aware client.