Business APIs

Transcription your systems can call

Audio in, transcripts out, kept as long as you need them. One header to authenticate, five output formats from a single job, and everything runs on our own GPUs — your audio is never sent to a third-party model.

# submit
curl -X POST https://whipscribe.com/api/v1/transcribe/url \
  -H "X-API-Key: $KEY" \
  -H "Idempotency-Key: episode-4417" \
  -d '{"url":"https://example.com/ep.mp3"}'

→ 202 { "job_id": "a1b2…", "status": "queued" }

# collect, ~2 min for an hour of audio
curl ".../jobs/$JOB/result?format=txt" \
  -H "X-API-Key: $KEY"

What you get

Built for systems, not sessions

The things you would otherwise build yourself on top of a raw speech-to-text endpoint.

01

Five formats, one job

txt, json, srt, vtt and docx are renderings of the same stored result. Ask for a second format and it costs nothing.

No re-processing
02

Kept, not expired

Transcripts and audio stay put. Nothing disappears because a trial ended or a retention clock ran out.

Deletes are reversible for 24h
03

Safe to retry

Send Idempotency-Key and a retried submit returns the original job instead of transcribing — and billing — twice.

Built for job runners
04

Batch status

Check up to 50 jobs in one call at 600 requests a minute. A per-job polling loop hits the limit long before it finishes.

For real backlogs
05

Files up to 5 GiB

Any audio or video container. Presigned and chunked uploads for anything a single POST would choke on.

mp3 · m4a · wav · mp4 · mov · mkv
06

On our own GPUs

Your audio is not sent to OpenAI, Google or AWS for inference, and no model is trained on it.

Private by architecture

Quickstart

Your first transcript, in four calls

Create a key from your account, add credit, and run this.

Authenticate

One header on every request. Send it as X-API-Key, never as a Bearer token — that header is reserved for user sign-in.

Submit

A file, or a URL you control. The idempotency key is optional and you want it anyway.

POST /api/v1/transcribe/url
{ "url": "https://example.com/ep.mp3", "diarize": true }

Wait for it

Poll one job, or ask about fifty at once. An hour of audio is usually back in about two minutes.

GET  /api/v1/jobs/{id}
POST /api/v1/jobs/status   { "ids": ["a1b2…", "c3d4…"] }

Take what you need

Any format, plus the AI summary, quotes and topics — cached per job, so repeat reads are free.

GET /api/v1/jobs/{id}/result?format=srt
GET /api/v1/jobs/{id}/insights

Limits

What each plan allows

PlanRequests/minMinutes/dayLongest fileCompletion callbacks
Free10602 hourspoll
Pro60unlimited10 hourspoll
Enterprise120unlimited10 hourswebhooks

Files up to 5 GiB on every plan. GET /v1/usage returns minutes today against your allowance, the month to date, queue depth and average job time — enough to build a budget guard without storing anything yourself.

Two things to know before you design around them

Webhooks are enterprise-only. Sending webhook_url on another plan returns 403 TIER_FORBIDDEN and the job is not created — check GET /v1/me for your plan and keep a polling branch.

The chat endpoint needs a signed-in user, not an API key, so questions-about-a-transcript cannot be automated server-side today. /insights covers the summary, quotes and topics and does accept a key.

Get going

Keys live in your account

Create, rotate and revoke from the Business APIs panel, alongside your spend and remaining quota. Several keys share one balance and one library, so a leak in CI can be revoked without touching production.

Volume commitment, data-residency or on-premise question? Write to contact@neugence.ai and describe the workload.