Skip to main content
POST
/
api
/
transcriptions
Create Transcription
curl --request POST \
  --url https://easy-peasy.ai/api/transcriptions \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "url": "https://example.com/audiofile.mp3",
  "audio_type": "podcast",
  "language": "English",
  "name": "Interview with John Doe",
  "detect_speakers": true,
  "enhanced_quality": true
}
'
{
  "uuid": "4bc4e8ee-f29e-4a53-996e-5da955c42927",
  "dashboard_url": "https://easy-peasy.ai/audios/4bc4e8ee-f29e-4a53-996e-5da955c42927"
}

Complete Workflow

Transcription is asynchronous — after submitting an audio file, you need to poll for results. Here’s the full workflow:

Step 1: Submit audio for transcription

Use this endpoint to upload your audio file. The response includes a uuid you’ll need for the next steps.
Transcription typically takes 1–5 minutes depending on audio length. Save the uuid from the response.

Step 2: Poll for results

Use Get Transcription Result to check if the transcription is complete. Poll every 15–30 seconds until the content field is populated. The transcription is ready when the response includes a non-empty content field and a segments array with timestamped text.
async function waitForTranscription(uuid, apiKey) {
  const maxAttempts = 40; // ~10 minutes max

  for (let i = 0; i < maxAttempts; i++) {
    const response = await fetch('https://easy-peasy.ai/api/audios', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': apiKey
      },
      body: JSON.stringify({ audio_id: uuid })
    });

    const data = await response.json();

    if (data.audio.content) {
      return data; // Transcription complete!
    }

    await new Promise(resolve => setTimeout(resolve, 15000));
  }

  throw new Error('Transcription timeout');
}

Step 3: Generate AI content (optional)

Once the transcription is complete, use Generate Audio Content to create summaries, titles, action items, and more.
curl -X POST https://easy-peasy.ai/api/generate-audio-content \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"audio_id": "YOUR_AUDIO_UUID"}'
You can also generate specific fields only:
curl -X POST https://easy-peasy.ai/api/generate-audio-content \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "audio_id": "YOUR_AUDIO_UUID",
    "fields": ["summary", "title", "keywords"]
  }'
Content generated depends on the audio type:
Audio TypeFields
Meetingsummary, title, description, action items, keywords, timestamped overview, topics & bullets, LinkedIn post
Podcastsummary, title, description, show notes, Twitter thread, article, newsletter, keywords, questions, LinkedIn post, timestamped overview, topics & bullets
Therapy Sessionsummary, title, description, progress note, SOAP note, DAP note, keywords, timestamped overview, topics & bullets, LinkedIn post

Authorizations

x-api-key
string
header
required

API key for authentication. Get yours at https://easy-peasy.ai/settings/api

Headers

x-api-key
string
required

Your API key

Body

application/json

The audio parameters to create transcriptions

url
string
required

The URL of the audio file

Example:

"https://example.com/audiofile.mp3"

audio_type
string

The type of audio (e.g., podcast, meeting)

Example:

"podcast"

language
string

The language of the audio (e.g., English, Chinese, French)

Example:

"English"

name
string

The name of the transcription

Example:

"Interview with John Doe"

detect_speakers
boolean

Whether to detect multiple speakers

Example:

true

enhanced_quality
boolean

Whether to use enhanced quality for transcription

Example:

true

Response

Successful transcription creation

uuid
string

Unique identifier for the created transcription

Example:

"4bc4e8ee-f29e-4a53-996e-5da955c42927"

dashboard_url
string

URL of the generated transcription

Example:

"https://easy-peasy.ai/audios/4bc4e8ee-f29e-4a53-996e-5da955c42927"