Presentr Analyze Media Intelligence API

Podcast analysis API for transcript, captions, chapters, ad markers, show notes, and media health.

Version 1.0.0 · Base URL https://analyze.presentr.me · OpenAPI spec

Authentication

Quickstart

Analysis is asynchronous: submit a source, poll the job, then fetch the artifacts. Create an API key from your dashboard under Settings.

1. Submit

curl -X POST https://analyze.presentr.me/api/v1/podcasts/analyze \
  -H "X-Api-Key: $PRESENTR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"source_url":"https://example.com/episode-42.mp3"}'

Returns 202 with a job envelope containing a uuid.

Retrying safely. Send an Idempotency-Key header on submit. Replaying the same key with the same body returns the original job (200, idempotent_replay: true) instead of starting — and charging for — a second analysis. The same key with a different body is rejected with 409. Keys are scoped to your account. This matters for automated callers: if a submit response is lost, retry with the same key rather than a new one.

curl -X POST https://analyze.presentr.me/api/v1/podcasts/analyze \
  -H "X-Api-Key: $PRESENTR_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"source_url":"https://example.com/episode-42.mp3"}'

2. Poll

curl https://analyze.presentr.me/api/v1/jobs/$JOB_UUID \
  -H "X-Api-Key: $PRESENTR_API_KEY"

Poll until status reaches a terminal state. Analysis of a typical episode takes several minutes, so poll on an interval rather than in a tight loop.

3. Retrieve

curl https://analyze.presentr.me/api/v1/jobs/$JOB_UUID/artifacts \
  -H "X-Api-Key: $PRESENTR_API_KEY"

Returns signed URLs for the generated artifacts — transcript, captions, chapters, ad markers, show notes and media health. The URLs are time-limited; fetch them promptly rather than storing them.

Usage and limits

curl https://analyze.presentr.me/api/v1/usage -H "X-Api-Key: $PRESENTR_API_KEY"

Each analysis consumes quota against your plan. Check /api/v1/usage before submitting work on someone's behalf, and surface the cost to them — an agent should not spend a user's balance without telling them.

Endpoints

POST /api/v1/podcasts/analyze

Create podcast analysis job

Request body: PodcastAnalyzeRequest

Responses:

GET /api/v1/jobs/{uuid}

Get job status

Responses:

GET /api/v1/jobs/{uuid}/artifacts

Get signed artifact URLs

Responses:

GET /api/v1/me

Verify authentication context

Responses:

GET /api/v1/usage

Current-period usage

Responses:

Schemas

PodcastAnalyzeRequest

JobEnvelope

Artifact

PodcastAnalysisResult

ErrorResponse