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

# Reliable integration

> Timeouts, retries, lost responses, and the order of checks.

## Before uploading

1. Get the current minute balance: [`GET /api/spaces/{space_id}/`](/en/api-reference/spaces/get), field `subscribe.available_usage_count`.
2. Make sure the balance covers the whole recording.
3. In a team space, check `write_access` in [`my_rights/`](/en/api-reference/spaces/rights).

## Unique titles

Add a marker to `title` that lets you find the recording: a date, a time, an ID from your system.

```text theme={null}
Call · John Smith · 2026-10-17 14:30 · crm-48213.mp3
```

The file extension still goes at the very end.

## Lost response to recording creation

If the response to `POST …/audio/` (or `by_url/`, `by_youtube/`) did not arrive because of a timeout or a dropped connection, the recording may have been created. Do not blindly retry the request:

1. Find the recording by title: `GET /api/spaces/{space_id}/audio/?search=<tag>&ordering=-created_at`. Search works as a case-insensitive regular expression, so search by a tag without special characters, for example `crm-48213`, not by the full title with dots and brackets.
2. Found it with `is_uploaded: false`: create the recording again and [delete](/en/api-reference/audio/delete) the empty one you found.
3. Did not find it: create the recording again.

## Timeouts

| Request | Timeout |
| - | - |
| API requests | 30 seconds |
| `PUT` of a file part | 2 minutes: a part of about 10 MB takes roughly 10 seconds at 10 Mbps |

## Upload links live for 5 hours

Create the recording right before uploading. If more than 5 hours have passed between creation and upload, create the recording again and delete the old one.

## Token

Get a new token with email and password when less than a day is left before `access` expires, or the API responds with `401`. Learn more: [Authentication](/en/authentication).

## Non-JSON responses

Occasionally the API responds with an HTML error page instead of JSON. Check `Content-Type` before parsing. For safe requests (`GET`, sign-in), retry the request after 1–2 seconds.

## Waiting for the result

Poll `result/` every 10–15 seconds, no more often. Treat processing as failed if `500` persists for more than 3 minutes in a row. Learn more: [Status and polling](/en/processing/status).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.