Limits and quota
Two different things can stop a call: a hard limit on shape and size, or a quota that runs out and refills.
Hard limits
| What | Limit | Notes |
|---|---|---|
| Recording size | 1 GB | A larger file is accepted by storage and then refused, leaving the meeting at audio_rejected. |
| Meetings per page | 50 | The limit parameter takes 1 to 50 and defaults to 25. |
| Member records | 250 | Everything that is not deleted counts, including members without an account. Integrations do not. |
| Vocabulary terms | 100 | Adding past the limit is refused with 409 VOCABULARY_FULL. |
| Keys per integration | 2 | Enough to rotate without a gap. Expired keys stop counting. |
| External id | 128 characters | Unique within the organisation, and free once the meeting it belonged to is deleted. |
Quota
Transcription and minutes are metered. When the organisation's quota for the period is spent, the call that would consume it answers 402 with details.next_reset_at: the moment the quota replenishes. Nothing is queued, so retrying before that time gets the same answer.
Read what is left before you start a batch rather than discovering it halfway through.
curl -X GET 'https://api.notulai.nl/v1/usage' \
-H 'Authorization: Bearer nla_live_...'Changing a meeting can cost a credit
credits_remaining first.Rate
Requests are throttled at the edge. Going over answers 429, and that response comes from the edge rather than from the API, so it is the one refusal that does not carry the error envelope. Back off and retry with a widening interval; do not treat it as a failure of the call.
Running out mid-recording is a dead end
transcribe_blocked. Topping up does not resume it. Create the meeting again and upload once there is quota. See from audio to minutes.