> ## Documentation Index
> Fetch the complete documentation index at: https://docs.60db.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# API Playground Troubleshooting

> Common issues and solutions when using the API playground

# 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" or "ZERO\_BALANCE"

**Cause**: The workspace wallet has no funds

**Solution**:

* Check your workspace balance in the [Dashboard](https://app.60db.ai) billing page
* Add funds via the Dashboard billing page
* Each workspace has its own wallet — make sure you're checking the right workspace

### 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**: You have reached your per-user concurrency cap (counted across REST + WS combined). Defaults: STT 8, TTS 5.

**Solution**:

* Wait for an in-flight request or session to finish, then retry.
* Do **not** auto-retry without backoff — the limit only releases when an in-flight call completes.
* The error body includes `details.limit` with the active cap value.

### 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](https://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](https://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:

* Check the [Authentication](/authentication) documentation
* Contact support at [support@60db.com](mailto:support@60db.com)
* Open an issue on [GitHub](https://github.com/60db-ai)
