Skip to content

Data Retention, Quotas, and Rate Limits

Koldan enforces data retention policies, usage quotas, and rate limits per user. These controls determine how long your data is kept, how much you can store and process, and how frequently you can call the API.

All three are resolved using the same priority chain:

Priority Source Description
User override Set directly on your account by an admin
Subscription plan From your active subscription plan
Tenant default Baseline configured for your organization

The first non-null value wins. If nothing is overridden, tenant defaults apply.


Data Retention

Retention policies define how many days your data is kept before Koldan automatically removes it. Different retention periods apply depending on the resource type and its state.

Deleted vs. Purged

Koldan distinguishes between deleted (soft-deleted) and purged (hard-deleted) states:

  • Deleted: Resources marked as deleted but still within their retention window. These are excluded from default listings but can be accessed using the isDeleted=true filter or by their unique ID.
  • Purged: Resources whose retention period has expired or that were explicitly purged by a user. Purged resources are completely invisible to the API. Accessing them by ID returns 404 Not Found, and they are never returned in listings.

Speech Services

Resource Retention applies to
Source media Original uploaded audio/video binary - auto-discarded after the configured number of days
Deleted files Deleted file content - permanently purged after a retention window
Transcription results Completed transcription output
Failed/canceled transcriptions Job records for unsuccessful transcription attempts
Deleted transcriptions Deleted transcription data
Summary results Completed summary output
Failed/canceled summaries Job records for unsuccessful summary attempts
Deleted summaries Deleted summary data
Translation results Completed translation output
Failed/canceled translations Job records for unsuccessful translation attempts
Deleted translations Deleted translation data
Listening audio Generated MP3 playback files
Deleted listening audio Deleted listening audio files

Text Services

Resource Retention applies to
Translation history On-demand text translation records
Deleted translations Deleted text translation data

Speaker Services

Resource Retention applies to Default
Completed verification records Verification decisions, scores, thresholds, quality scores, source enrollment ids, embedding/sentver model metadata, and retained debug data 90 days
Failed verification records Failed verification attempts and processing errors 30 days
Deleted verification records Soft-deleted verification data before final purge 0 days
Verification recordings Raw probe audio submitted for a verification attempt 7 days
Failed enrollments Failed enrollment records and processing errors 30 days
Deleted enrollments Soft-deleted enrollment media, biometric artifacts, errors, and debug data before final purge 30 days
Archived speaker enrollments Enrollments that belong to a speaker in ARCHIVED status before automatic soft-delete 365 days
Inactive-model voice prints Voice prints produced by a concrete voice-print model after that model becomes INACTIVE 30 days
Deleted voice prints Soft-deleted voice print vectors, object keys, and sensitive debug artifacts before final purge 7 days

Verification Recordings

verificationProbeAudioRetentionDays controls only raw probe recording retention. With the default 7 days.

Automatic Deletion

When a retention period expires, the associated data is permanently deleted and cannot be recovered. Download or export any data you need before it reaches its retention limit.

Check Your Retention Policy

GET /api/v1/retention

Returns your effective retention periods (in days) for all resource types, including whether each value is a user-level override or the tenant default.


Quotas

Quotas limit how much you can store and process. They are tracked as a combination of a limit and your current usage.

Speech Services

Quota Unit
Storage Bytes
Transcription Minutes per month (includes offline jobs and online streaming sessions)
Summaries Requests per month
Summary tokens LLM tokens per month
Translations Requests per month
Translation tokens LLM tokens per month

Text Services

Quota Unit
Text translations Requests per month
Text translation tokens LLM tokens per month

Speaker Services

Quota Unit Default
Speaker verifications Requests per month 10000
Speaker enrollments Requests per month 1000
Voice-print builds Voice-print creation requests per month 100
Speaker biometric storage Retained biometric bytes 2147483648
Speakers Active speaker objects 10000
Enrollments per speaker Active enrollment objects 50
Voice prints per speaker Active voice-print objects 20

Quota Response Format

Each quota is returned as an object with three fields:

Field Description
limit Maximum allowed value
used Current consumption
available Remaining capacity (limit - used)

Monthly quotas reset automatically on the 1st of each month.

Exceeding a Quota

When a quota is exhausted (available = 0), further requests for that operation return 402 Payment Required or 403 Forbidden until the quota resets or an administrator increases your limit.

Check Your Quotas

GET /api/v1/quotas

Returns your effective quota limits and current usage across all services.


Rate Limits

Rate limits restrict how many requests per minute you can make to specific operations and to the API as a whole.

Per-Operation Limits

Operation Applies to
File uploads Uploading audio/video files
Transcription jobs Creating new transcription jobs
Summary executions Generating summaries
Translation executions Generating translations
Text translation executions On-demand text translations
Speaker enrollment creations Creating speaker enrollments
Speaker verification executions Running 1:1 speaker verification
Speaker voice-print previews Previewing voice-print quality before building
Speaker voice-print creations Creating voice prints from ready enrollments
Speaker voice-print rebuild starts Reserved for future rebuild workflows
Speaker recording downloads Downloading retained enrollment/probe recordings
User lookups Searching / looking up users
Stream session starts per minute Starting new online streaming sessions per minute
Stream concurrent sessions Maximum concurrent streaming sessions per user
Stream session duration Maximum allowed streaming session duration (seconds)
Stream bytes per second Maximum audio bandwidth per streaming session (bps)
File download bytes per second Maximum file download speed (bytes per second)

Most operation limits are per minute. speakerVoicePrintCreations defaults to 10 per minute. speakerVoicePrintRebuildStarts is per user every 60 minutes, defaults to 1, and is currently reserved for future rebuild workflows.

Global Limit

In addition to per-operation limits, a global requests-per-minute cap applies across all API endpoints combined.

Rate Limit Headers

Every API response includes rate limit headers so you can track your remaining budget:

Header Description
X-RateLimit-Limit Your per-minute limit for this operation
X-RateLimit-Remaining Requests remaining in the current window
X-RateLimit-Reset Unix epoch timestamp when the window resets

Handling 429 Too Many Requests

When you exceed a rate limit, the API responds with:

HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1712073600
Header What to do
Retry-After Number of seconds to wait before retrying

Best Practice

Implement exponential backoff with the Retry-After header value as the minimum wait time. Avoid tight retry loops - they will continue to receive 429 responses and may delay your recovery.

Check Your Rate Limits

GET /api/v1/rate-limits

Returns your effective per-operation and global rate limits.