Skip to main content

API Playground Troubleshooting

The API playground lets you test endpoints directly in the browser. Here are solutions to common issues.

”Missing required fields to send a playground request”

This error occurs when required parameters haven’t been filled in. Here’s how to fix it:

For GET Requests

GET requests typically only need your API key:
  1. Enter your API key in the Authorization field
  2. Click Send
Example working GET requests:
  • GET /models
  • GET /voices
  • GET /developer/api

For POST Requests

POST requests need additional body parameters:
  1. Enter your API key in the Authorization field
  2. Fill in all required body parameters (marked with required)
  3. Click Send
Example: For POST /tts-synthesize, you must fill in:
  • text (required) - The text to convert to speech
  • voice_id (optional) - Voice to use
  • speed (optional) - Speech speed

For Path Parameters

Some endpoints have path parameters like {id}:
  1. Enter your API key in the Authorization field
  2. Fill in the path parameter (e.g., the API key ID)
  3. Click **Send`
Example: DELETE /developer/api/{id} requires the API key ID in the URL.

Billing & Credits Issues

Issue: “402 Insufficient credits”, “PLAN_CREDITS_EXHAUSTED” or “ZERO_BALANCE”

Cause: The workspace has used its plan credits and its top-up credits for this period Solution:
  • Check details.topup_available in the 402 body, or call GET /billing/topup to see your balance
  • Free or Starter: upgrade to Creator or Pro for more credits. Top-ups are not available on these plans. Plan credits renew monthly.
  • Creator or Pro: buy a top-up from the Dashboard or with POST /billing/add-funds. Top-up credits never expire.
  • Each workspace has its own credits. Make sure you’re checking the right workspace.

Issue: “403 TOPUP_NOT_AVAILABLE_ON_PLAN” when buying credits

Cause: Top-ups are available on the Creator and Pro plans only Solution:
  • Upgrade to Creator or Pro, then retry. details.eligible_plans lists the plans that can buy top-ups.
  • See Plans, Credits & Top-ups

Issue: “400 TOPUP_AMOUNT_OUT_OF_RANGE”

Cause: The top-up amount is below $10 or above $1,000 Solution:
  • Use an amount between details.min_usd and details.max_usd. Split larger amounts into several top-ups.

Issue: “403 Forbidden” on billing endpoints

Cause: Only workspace owners can access billing endpoints Solution:
  • Verify you are the workspace owner (not admin/developer/member)
  • Contact the workspace owner to manage billing

Issue: “Workspace not found” on API calls

Cause: The API key or JWT token is not associated with a valid workspace Solution:
  • If using API keys: verify the key is active and linked to a workspace
  • If using JWT: include workspace_id in the request body or query params
  • Check that the workspace hasn’t been deleted

STT / TTS Limits & Errors

Issue: “429 STT_CONCURRENCY_LIMIT” or “429 TTS_CONCURRENCY_LIMIT”

Cause: Your workspace has reached its plan’s concurrency limit (requests running at the same time, REST + WebSocket combined). TTS: Free 1, Starter 5, Creator 10, Pro 20. STT: Free 2, Starter 10, Creator 20, Pro 50. See Plans, credits and top-ups. Solution:
  • Wait for an in-flight request or session to finish, then retry, or upgrade the plan for a higher limit.
  • Do not auto-retry without backoff — the limit only releases when an in-flight call completes.
  • The error body includes details.limit (the active limit) and details.plan.

Issue: “429 STT_UPSTREAM_RATE_LIMIT”

Cause: The upstream STT service is rate-limiting all 60db traffic. Solution:
  • Read the Retry-After HTTP header (seconds) and back off for that duration before retrying. The header takes precedence over the JSON body’s details.retry_after.

Issue: “503 STT_UPSTREAM_UNAVAILABLE”

Cause: The upstream STT service returned a 5xx. Solution:
  • Retry with exponential backoff (1s → 2s → 4s …). Treat as transient, not a user-input error.
  • No credits are charged for upstream errors.

Issue: “499 STT_CLIENT_CANCELLED”

Cause: The client closed the connection before the response was returned. The upstream call was aborted. Solution:
  • Intentional — wire AbortController.abort() to your cancel button. No credits are charged. Don’t retry; don’t show an error toast.

Issue: WebSocket closed with code 1008 and STT_CONCURRENCY_LIMIT / TTS_CONCURRENCY_LIMIT

Cause: Concurrency cap reached on the WebSocket path. Solution:
  • Wait for an in-flight session to finish, then reconnect. Do not auto-reconnect immediately on 1008.

Common Issues

Issue: “401 Unauthorized”

Cause: Invalid or missing API key Solution:
  • Verify your API key is correct
  • Get a new API key from app.60db.ai
  • Make sure you’re including the key in the Authorization field

Issue: “CORS error”

Cause: Browser security blocking the request Solution:
  • Make sure you’re testing from the documentation site
  • Try refreshing the page
  • Clear your browser cache

Issue: Request times out

Cause: Network issues or server problems Solution:
  • Check your internet connection
  • Try again in a few moments
  • Check if the API is operational

Getting Your API Key

  1. Go to app.60db.ai
  2. Navigate to Settings → Developer → API Keys
  3. Click Create API Key
  4. Copy and store your API key securely

Tips for Using the Playground

  1. Start with GET requests - They’re simpler and only need an API key
  2. Check required fields - All required fields must be filled before sending
  3. Use example values - The playground shows example values to help you get started
  4. Test incrementally - Try one endpoint at a time to understand the API

Still Having Issues?

If you’re still experiencing problems: