Atomiser for Platforms

Developer API

Embed the full Atomiser pipeline, transcription, subtitles, clips, reframing, dubbing, TTS and audio enhancement, inside your own product. Fully white-label: your users never see us.

Free sandbox: 500 test credits, 30 days, no card. In production with platform partners today.

Built for platforms, not end users

Podcast & media platforms

Hosting platforms, directories, and networks. Give every creator on your platform automatic clips, transcripts, and show notes the moment they publish.

Creation & editing tools

Editors, DAMs, and content suites. Embed transcription, dubbing, captions, and reframing behind your own UI instead of building an AI pipeline.

Agencies & content ops

High-volume repurposing pipelines: long-form in, clips + captions + posts out, metered per job and billed on one invoice.

How onboarding works

1

Tell us what you're building

Fill the form below. A human (not a bot) replies within one business day. We'll scope which tools fit and sanity-check volume.

2

Integrate against a free sandbox

You get an at_test_ key with 500 test credits for 30 days. The full production pipeline, no card, no commitment. Integrate end-to-end, then evaluate output quality yourself.

3

Go live on a rate card

Switch to an at_live_ key scoped to your tools. Per-tool, per-unit pricing agreed up front, monthly invoicing, no seat fees. You pay for jobs that complete, never for failures.

Request API access

Sales-led onboarding. Tell us about your platform and we'll get you a sandbox key.

Which tools are you interested in?

Free sandbox key (500 test credits, 30 days). No card required. We reply within one business day.

How it works

1

Submit a job

POST a media URL (or text for TTS) with the tool you want. You get a job ID back instantly, processing is async.

2

We process it

Your job runs on the same production pipeline that powers Atomiser. We notify your webhook_url when done, or poll the job.

3

Collect the result

Completed jobs return a signed result URL (24h expiry) plus structured data like transcripts, clip metadata, and credits charged.

Authentication

Every request carries your API key as a Bearer token. Keys are scoped to an environment and to a specific set of tools, test keys (at_test_…) and live keys (at_live_…) are fully separated.

Authorization
curl https://api.atomiser.ai/v1/tools \
  -H "Authorization: Bearer at_test_xxxxxxxxxxxxxxxx"

Keys are shown once at creation. Store them server-side only, never in client code.

Quickstart

Create a transcription job:

Create a job
curl -X POST https://api.atomiser.ai/v1/jobs \
  -H "Authorization: Bearer $ATOMISER_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: episode-42-transcribe" \
  -d '{
    "tool": "transcription",
    "input_url": "https://cdn.you.com/episode-42.mp3",
    "options": { "language": "auto" },
    "end_user_ref": "user_4821",
    "webhook_url": "https://api.you.com/hooks/atomiser"
  }'
202 Accepted
{
  "job": {
    "id": "job_9f2k...",
    "tool": "transcription",
    "status": "queued",
    "created_at": "2026-09-26T10:15:00Z",
    "credits_charged": null,
    "result": null
  }
}

Then poll (or wait for your webhook):

Get job status
curl https://api.atomiser.ai/v1/jobs/job_9f2k... \
  -H "Authorization: Bearer $ATOMISER_API_KEY"

# → { "job": { "status": "completed",
#      "units": 42.5, "unit": "minute", "credits_charged": 47,
#      "result": { "url": "https://…signed-24h…", "data": { "text": "…" } } } }

Full details: webhook payload + verification, idempotency semantics, per-tool result shapes, billing rules: integration guide · OpenAPI spec · API Terms

Endpoints

MethodPathDescription
GET/v1/toolsYour key’s enabled tools + rate card
POST/v1/jobsCreate an async processing job
GET/v1/jobs/:idJob status + signed result URL
GET/v1/jobsList / search jobs (filters + pagination)
POST/v1/jobs/:id/cancelCancel a queued/running job, never billed
POST/v1/jobs/:id/retryRetry a failed/cancelled job, returns a new job
GET/v1/api-usageMetering: totals, per-tool, per-end-user
GET/v1/voicesTTS voice catalogue

Tools

Each API key is enabled for a specific toolset. Per-tool rates are set on your rate card during onboarding, GET /v1/tools always returns the live rates for your key.

transcription

Accurate transcripts with word-level timestamps

billed per media minute

subtitles

Burned-in animated captions (14 styles, 20+ languages)

billed per media minute

clips

AI-extracted short clips with virality scoring

billed per media minute

reframe

Auto-reframe to 9:16 / 1:1 / 4:5 with speaker tracking

billed per media minute

audio_enhance

Studio-quality cleanup: noise, level, clarity

billed per media minute

convert

Format conversion (mp3, wav, aac, ogg, mp4, …)

billed per media minute

dubbing

Voice-preserved dubbing into 30+ languages

billed per output minute

tts

Natural narration from text, 40+ voices

billed per 1k characters

repurpose

Transcript into posts, threads, blogs, show notes

billed per generated asset

name_suggestions

Podcast/YouTube name ideas with live availability checks

billed per request

show_description

SEO-structured show/episode descriptions

billed per request

publish

Schedule/publish to users’ connected social accounts

billed per destination

Webhooks

Pass webhook_url on job creation and we POST a signed callback on job.completed / job.failed / job.cancelled. Verify the X-Signature header (HMAC-SHA256 of the raw body, hex-encoded) with your webhook secret. Retries use exponential backoff.

Signature verification (Node.js)
const crypto = require('crypto');

function verify(rawBody, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

Reliability

Idempotent creation

Send an Idempotency-Key header. Retries within 24h return the same job, safe to retry on timeouts.

Rate limiting

Redis-backed limits per key. X-RateLimit-Remaining / X-RateLimit-Reset headers on every response.

Usage metering

GET /v1/api-usage breaks credits down per tool and per end_user_ref, reconcile against your own plans.

Errors

CodeHTTPResolution
unauthorized401Missing, invalid, or revoked API key, check the Bearer header.
unknown_tool / invalid_input / invalid_options400Request body issue, see the message field; it names the missing field.
tool_not_allowed403Tool not enabled on this key, ask us to extend the scope.
job_not_found404Bad job id, or the job belongs to a different organization.
job_not_cancellable / job_not_retryable409Job is already terminal or past the point of cancellation.
rate_limit_exceeded429Respect Retry-After; watch X-RateLimit-* headers on every response.

FAQ

How do we test before going live?

Your at_test_ key runs the same production pipeline against a separate test credit pool, onboarding includes a complimentary allocation so you can integrate end-to-end before switching to at_live_. Failed and cancelled jobs are never billed.

Our media is private (S3, GCS, behind auth). Can we use it?

Yes. Generate a presigned GET URL on your side (S3, GCS, R2, CloudFront, all work) and pass it as input_url. We never see your storage credentials.

What if our end user cancels mid-processing?

Call POST /v1/jobs/:id/cancel, the job is marked cancelled, never billed, and a job.cancelled webhook confirms it.

Do result links expire?

No expiry trap, every GET /v1/jobs/:id returns a freshly signed URL valid for 24h. Download and re-host for long-term storage.

How does billing work for failed jobs?

Failed and cancelled jobs are never billed, no usage event is recorded, and any credits the pipeline already deducted are refunded automatically. You only pay the API rate on completed jobs.

What media URLs are accepted?

Almost anything public: YouTube/Vimeo/Rumble/X/TikTok links, direct media files (mp4, mp3, wav, mov, ogg…), and presigned S3/GCS/R2/CDN URLs. Private or internal-network hosts are rejected for security.

How do we map this to our own user plans?

Pass your internal user ID as end_user_ref on every job, then read GET /v1/api-usage, the by_end_user breakdown tells you exactly what each of your users consumed. We meter; you bill them however you like.

Is there an OpenAPI spec or SDK?

Yes. A machine-readable OpenAPI 3.0 spec at atomiser.ai/partner-api.openapi.yaml (import into Postman or generate a typed client with openapi-generator) and a full integration guide at atomiser.ai/partner-api-guide.md covering webhooks, idempotency, billing rules, and every tool's result shape.

Fully white-label

Result URLs, errors, and metadata never expose Atomiser or upstream provider names. Your end users see your product; the entire AI supply chain stays invisible.