Skip to the content
  1. Docs
  2. Billing and usage

Billing and usage

Core + Managed TransfersGuide · 5 min
What one billed request is, how MusicAPI Core and MusicAPI Managed Transfers are metered, the price tiers per 1,000 requests, the €500 monthly minimum, and where to see your usage.

MusicAPI bills by the request, in euros, once a month. There is no seat price and no per-user price.

What one request is

The meter counts one request for each of these:

WhatCounts as
A library call: /api/{integrationUserUUID}/…One request, failed calls included
A sign-in that connects an account (hosted sign-in or a pre-authorized session)One request
A call that a managed transfer makes to a music serviceOne request per call. Retries of one call do not count again.

Not billed:

Calls from a signed-in docs session count like any other call of your account.

Core and Managed Transfers metering

A managed transfer reads the source service and writes the destination service. Your plan decides which side is billed:

PlanTransfer requests billed
MusicAPI Managed TransfersBoth sides: the source reads and the destination writes
MusicAPI CoreThe source side only

The destination is your own service, so on the Core plan the writes into it are not billed. Your library calls and sign-ins are billed on both plans.

As a guide, one transfer makes about 60 requests on the source side and about 120 on the destination side. The real number depends on the size of the library and on the services.

Price per 1,000 requests

The tiers are cumulative within one month: the first 5 million requests are billed at the first rate, the next 20 million at the second, everything above at the third.

Monthly requestsPrice per 1,000 requests
0 – 5M€0.60
5M – 25M€0.45
25M +€0.30

The monthly minimum

The €500 minimum applies to accounts that run on MusicAPI's managed integrations. Each month bills the greater of the metered charge and the minimum. When the metered charge is lower, the invoice adds a "Minimum monthly spend top-up" line.

An account that uses only its own developer apps has no minimum: it pays the metered charge alone. In the first and the last month of a plan, the minimum counts only the days of the plan, and only the usage after you went live is billed.

Requests in the monthMetered chargeInvoice
400,000400 × €0.60 = €240€500 (with a €260 top-up)
2,000,0002,000 × €0.60 = €1,200€1,200
8,000,0005,000 × €0.60 + 3,000 × €0.45 = €4,350€4,350

The pricing page has a calculator.

Where to see usage

  • Analytics → API usage in the dashboard: requests over time, by endpoint, error rates and response times.
  • The Usage API: the same numbers as JSON, for your own reports and alerts.
  • The MCP server tool get_usage_summary: the billed requests of this month and last month, from the same table as the invoices. The numbers lag a few hours.

Read your usage by API

The Usage API gives your backend the numbers of the Analytics pages. It needs Client Secret authentication (Authorization: Basic base64(clientId:clientSecret)), so call it only from your backend. It is not billed, and it counts against your rate limit like any other call.

EndpointWhat it answers
GET /public/analytics/api-requestsRequests per period: total, succeeded, failed
GET /public/analytics/unique-usersConnected users with a request in each period (daily or monthly active users)
GET /public/analytics/errorsFailed requests per period and HTTP status code
GET /public/analytics/error-typesFailed requests per service and error name
GET /public/analytics/auth-statusesSign-ins per service: started, connected, failed
GET /public/analytics/users-per-typeConnected users with a request, per service
GET /public/analytics/top-routesRequests, error rate and response time per endpoint
GET /public/analytics/response-timesAverage, p50, p95 and p99 response time per period
GET /public/analytics/geo-distributionRequests and users per country
GET /public/analytics/top-usersRequests and errors per connected user

Every endpoint takes startDate and endDate (YYYY-MM-DD, UTC). Both days count. One call reads at most 366 days, or 31 days with granularity=hourly. The series also take granularity (hourly, daily, weekly or monthly), and most endpoints take integrationType to count one service only. Counts come back as decimal strings, so a large count stays exact.

Shell
curl 'https://api.musicapi.com/public/analytics/api-requests?startDate=2026-10-01&endDate=2026-10-31&granularity=daily' \
  -u 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET'
JSON
{
  "data": [
    { "period": "2026-10-01 00:00:00", "total_requests": "1250", "success_requests": "1231", "error_requests": "19" }
  ]
}

The numbers include every request the meter bills, failed requests too. The Usage API reads the raw request log, so today's numbers include the requests up to the moment of your call.

Invoices

Invoices come from Stripe once a month, after the month ends.

  • Card. Stripe charges the card you added in the dashboard (Billing). If a charge fails, we email you; when the invoice is still unpaid 7 days later, the API answers 402 until it is paid. Paying the invoice or adding a new card switches the API back on within a minute.
  • Invoice. For accounts on managed integrations that agree it with us: Stripe emails the invoice, payable in 30 days.

You can change the card or cancel the plan on the Billing page. A cancel charges what is due at once and switches the API off. A different cycle, a custom tier or a custom limit is part of your agreement with us. Contact us.

Keep the bill down

  • Store what you read. A playlist list does not change every second.
  • Use limitParam with the service's maximum, so a full read takes fewer pages.
  • Send at most 20 items per write, but do send 20, not one at a time.
  • Use webhooks instead of polling.