HTTP 403Client-side — change the request

Pro plan required

pro_plan_required

The credential is real and the account exists — but the HTTP API is part of VoiceLabs Pro, and this account does not have it. Every /v1 operation is refused this way, reads included: the API is one feature, not a per-endpoint entitlement.

Why it happens

A key created on a free account, or a key on an account whose subscription or trial has since lapsed. Keys are not revoked when a subscription ends — they simply stop being accepted, and start working again the moment the account is on Pro.

How to fix it

Subscribe or restart the trial. The problem document carries a settings_url pointing at the billing page for the account that made the call, and the entitlement takes effect immediately — the very next request with the SAME key succeeds, with nothing to re-create.

Safe to retry?

No, and waiting does not help: this is not an allowance that resets. The account has to be on Pro.

What it looks like on the wire

{
  "type": "https://voicelabs.now/errors/pro_plan_required",
  "title": "Pro plan required",
  "status": 403,
  "detail": "A human-readable explanation of this particular occurrence.",
  "instance": "/v1/speech",
  "code": "pro_plan_required"
}

Branch on code, never on status or on the prose in detail: two different problems can share a status, and detail is written for humans and may be reworded. Problems a settings page can resolve also carry settings_url, and a scope failure carries required_scope.

Every VoiceLabs API error is an RFC 9457 problem document with a stable code.

See every error code