Table of Contents
API : AI quota : Status
Introduction
This request returns a customer's AI allowance for the current calendar month: the AI product in effect, a pending product change, and for each of the three metered resources the included amount, what top-ups have added, what has been used and what is left.
Three resources are metered, each with its own monthly allowance:
- Transcription (speech to text) - counted in seconds of audio. The recording length is counted, not the number of audio channels.
- Summary (LLM) - counted in tokens (input + output). Prompt cache tokens are not counted.
- Text to speech - counted in characters.
An included amount of null means unlimited, 0 means the resource may not be used at all. When a resource is used up, further requests of that kind are refused with 402 quota_exceeded until the next month or until an AI top-up is bought. A customer with no AI product at all may not use any AI service.
The month is a calendar month in the Europe/Copenhagen timezone, formatted YYYY-MM. In the month the AI product took effect, the included amounts are pro-rated from that date using the same fraction of a month that the first invoice line is calculated with.
Only requests that completed (SUCCESS) or that the client hung up on (ABORTED) are counted - the provider did the work in both cases. Requests that failed or timed out are not counted. The request that crosses the limit still runs; the next one is refused.
Request
| URL | https://api.telecomx.dk/ai/quota | |
|---|---|---|
| Method | GET | |
| Access level | MANAGER, OWNER for the user's own customer. RESELLER, RESELLER_ADMIN or ADMIN, who may also name another customer with customer. |
|
| Query | customer | [optional] Id of the customer to show. Only honoured for RESELLER and up, and access to the customer is checked. Defaults to the user's own customer. |
Query examples
https://api.telecomx.dk/ai/quota https://api.telecomx.dk/ai/quota?customer=650000000000000000000101
Response
| JSON object | ||
|---|---|---|
| customer | Id | Id of the customer the numbers belong to. |
| month | String | The calendar month covered, YYYY-MM in Europe/Copenhagen. |
| from | Date | When the AI product in effect took effect. Null when the customer has no AI product. |
| product | Object | The AI product in effect. Null when the customer has no AI product - every AI request is then refused. |
| product._id | Id | Id of the product (the reseller copy or customer copy the customer is on). |
| product.name | String | Product name. |
| product.llmModel | String | The LLM used for AI summaries of this customer's recordings: claude-opus-5, claude-sonnet-5 or claude-haiku-4-5. Set on the master product. |
| product.sttModel | String | The speech-to-text model used for this customer's transcriptions: scribe_v2. Set on the master product. |
| pendingChange | Object | A product change that takes effect at the start of next month. Null when no change is pending. |
| pendingChange.product | Object | The product that takes over ({_id, name, llmModel, sttModel}). Null when the AI product is being removed. |
| pendingChange.from | Date | When the change takes effect - always the 1st of a month. |
| resources | Object | One entry per resource. Keys: stt (transcription seconds), llm (summary tokens) and tts (text-to-speech characters). |
| resources.*.included | Number | The amount included this month, after pro-rata. Null = unlimited. |
| resources.*.topUp | Number | The amount added by top-up purchases this month. |
| resources.*.limit | Number | included + topUp - the amount that may be used this month. Null = unlimited. |
| resources.*.used | Number | The amount consumed this month. |
| resources.*.remaining | Number | limit - used, never below 0. Null = unlimited. |
| resources.*.unlimited | Boolean | True when the resource has no limit. |
| resources.*.requests | Number | The number of counted requests for the resource this month. |
| resources.tts.audioSeconds | Number | Only on tts: seconds of audio generated this month. Reported, not limited. |
Note that properties holding no value may be omitted from the object.
Example
{ "customer": "650000000000000000000101", "month": "2026-09", "from": "2026-09-15T00:00:00.000Z", "product": { "_id": "650000000000000000000410", "name": "AI Business", "llmModel": "claude-sonnet-5", "sttModel": "scribe_v2" }, "pendingChange": { "product": { "_id": "650000000000000000000411", "name": "AI Enterprise", "llmModel": "claude-opus-5", "sttModel": "scribe_v2" }, "from": "2026-10-01T00:00:00.000Z" }, "resources": { "stt": { "included": 18720, "topUp": 18000, "limit": 36720, "used": 21044, "remaining": 15676, "unlimited": false, "requests": 312 }, "llm": { "included": 1040000, "topUp": 0, "limit": 1040000, "used": 1039880, "remaining": 120, "unlimited": false, "requests": 287 }, "tts": { "included": null, "topUp": 0, "limit": null, "used": 54210, "remaining": null, "unlimited": true, "requests": 96 } } }
Errors
| Error code | Message | Description |
|---|---|---|
| 422 | customer | Customer id is invalid |
| 403 | access_denied | Insufficient access level, or no access to the customer |
| 500 | internal_error | <Unspecified> |