Retention and deletion
What is stored, for how long, how to delete it early, what DELETE actually erases, and who processes your audio.
This page describes what happens to your material after a transcript finishes. None of it is marketing: every line matches a path that exists in the code, and what does not exist yet is stated as not existing.
What is stored
| Material | Where | For how long |
|---|---|---|
Uploaded audio (uploadId) | Object storage, encrypted | While any non-deleted transcript still uses it |
Audio from a url of yours | Temporary copy during processing | Removed when the job ends (and within 24 h by the bucket itself, worst case) |
| Text and words | Database | Until you delete them, or until retentionDays expires |
| Usage record (duration, cost, date) | Database | Permanent: it is what your invoice is built from |
| Technical access logs | Server log | 6 months (Brazilian Marco Civil, art. 15) |
Your audio and your transcripts are never used to train models, ours or anyone else's, and never enter an evaluation set.
Setting the period at creation
retentionDays erases that transcript's content on its own, counted from
creation:
curl https://api.transcrevo.com/v1/transcripts \
-H "Authorization: Bearer $TRANSCREVO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/call.mp3",
"speakers": true,
"retentionDays": 7
}'The period is per transcript, not per account, because the material is what decides: a recorded legal meeting and a voice note have no reason to live the same length of time. Accepts 1 to 365 days.
There is no retentionDays: 0. Real zero retention is a processing path that
never writes the audio down, and until that path exists here, offering it as a
short number would be selling the name without the thing.
Deleting before the period
DELETE /v1/transcripts/{id}What actually goes:
- the text and the words, immediately;
- the speaker turns (
diarizationSegments), immediately; - the uploaded audio, on the next collector sweep (it runs every 10 minutes and removes the file once no live transcript points at it).
What stays: the usage row, with duration, cost and date. It is the record of
a charge that already happened, and erasing it would rewrite your statement for
the month. After DELETE, the transcript still answers by id, with text and
words null.
A transcript in processing cannot be deleted (409 transcript_processing):
the result would arrive afterwards and refill what was just erased. Cancel it
first with POST /v1/transcripts/{id}/cancel, which is also never charged.
Backups
The database is backed up, and a deleted transcript can survive in a backup copy until that copy rotates out. No query, no endpoint and no screen reads from a backup: it exists for disaster recovery, it is encrypted, and deleted data leaves it when the copy expires.
Who processes your audio
The sub-processors that touch customer content, and what each one does:
| Company | Role |
|---|---|
| Oracle Cloud Infrastructure | Application and database servers |
| Cloudflare | Network, attack protection, and encrypted storage of uploaded audio |
| Vast.ai | GPU machines where audio is decoded and transcribed |
| Stripe | Payments (never receives audio or transcripts) |
| Identity verification only, for people who sign in with Google |
The full list, with legal bases, international transfers and your rights as a data subject, is in the Privacy Policy.
What we do not offer yet
- Zero retention (never writing the audio down at all).
- Region selection for processing: the GPU fleet is rented wherever cards are available, and promising a region we cannot enforce would be a promise the code does not keep.
- SOC 2 or HIPAA certification. We do not have it, and we will not write that we do.
If one of those is a requirement for your project, write to contato@transcrevo.com: knowing how many people need it is how the work queue gets chosen.
Safe retries
Idempotency-Key, the retryable field, long polling with ?wait=, cancellation, cursors and the limits the API reports about itself: what an integration needs to defend itself.
Migrating here
From another transcription API or from your own open-model script: the concept map, what changes in your code, and what to check before you switch.