Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.plaud.ai/llms.txt

Use this file to discover all available pages before exploring further.

Authentication

Step 1 — Exchange credentials for a token

POST /oauth/partner/access-token
Authorization: Basic base64(client_id:secret_key)
Content-Type: application/x-www-form-urlencoded
{
  "access_token": "eyJhbGciOiJSUz...",
  "refresh_token": "eyJhbGci...",
  "token_type": "bearer",
  "expires_in": 86400
}

Regions

RegionBase URL
US (default)openapi.plaud.ai
EU (GDPR)openapi.plaud.eu
Japanopenapi.plaud.jp

Step 2 — Refresh before expiry

POST /oauth/partner/access-token/refresh
Authorization: Basic base64(client_id:secret_key)
Content-Type: application/x-www-form-urlencoded

refresh_token=<refresh_token>

Submit Audio

POST /open/partner/ai/transcriptions/
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "audioUrl": "https://your-storage.com/recording-001.m4a",
  "language": "en",
  "webhookUrl": "https://your-server.com/webhooks/plaud",
  "speakerDiarization": false
}

Body parameters

ParameterTypeRequiredDescription
audioUrlstringYesPre-signed URL (M4A, MP3, WAV)
languagestringNoBCP-47 code (en, ja, zh); defaults to auto-detect
webhookUrlstringNoURL to receive results when complete
speakerDiarizationbooleanNoIdentify and label speakers; default: false

Response

{
  "transcriptionId": "txn_01HXXXXXXXXXXXXXX",
  "status": "processing",
  "createdAt": "2026-03-24T10:00:00Z"
}

Get Results

GET /open/partner/ai/transcriptions/{transcriptionId}
Authorization: Bearer <access_token>
{
  "transcriptionId": "txn_01HXXXXXXXXXXXXXX",
  "status": "completed",
  "text": "Meeting started at 10am...",
  "language": "en",
  "duration": 1843,
  "segments": [
    {
      "start": 0.0,
      "end": 4.2,
      "text": "Meeting started at 10am.",
      "speaker": "Speaker 1"
    }
  ],
  "completedAt": "2026-03-24T10:02:14Z"
}

Status values

StatusMeaning
processingIn progress
completedReady — text and segments populated
failedError — inspect error field