API Endpoints

Complete reference for all available Wave API endpoints.

GET

/v1/sessions

List your sessions with pagination support.

Required Scope
sessions:read

Query Parameters

ParameterTypeDescription
limitintegerMax sessions to return (default: 20, max: 100)
cursorstringISO 8601 date for pagination (from previous response)
sincestringOnly sessions newer than this ISO 8601 date
typestringFilter by type (meeting, recording, youtube, etc.)

Example Request

curl -H "Authorization: Bearer wave_api_xxx..." \
  "https://api.wave.co/v1/sessions?limit=10&type=meeting"

Example Response

{
  "sessions": [
    {
      "id": "abc123",
      "title": "Weekly Standup",
      "timestamp": "2025-01-20T10:00:00Z",
      "duration_seconds": 1800,
      "type": "meeting",
      "platform": "zoom"
    }
  ],
  "next_cursor": "2025-01-19T09:00:00Z",
  "has_more": true
}
GET

/v1/sessions/:id

Get detailed information about a specific session, including summary and notes.

Required Scope
sessions:read

Path Parameters

ParameterTypeDescription
idstringThe session ID

Example Request

curl -H "Authorization: Bearer wave_api_xxx..." \
  https://api.wave.co/v1/sessions/abc123

Example Response

{
  "id": "abc123",
  "title": "Weekly Standup",
  "timestamp": "2025-01-20T10:00:00Z",
  "duration_seconds": 1800,
  "type": "meeting",
  "platform": "zoom",
  "language": "en",
  "summary": "The team discussed Q1 priorities and assigned action items...",
  "notes": "Follow up on marketing budget by Friday"
}
GET

/v1/sessions/:id/transcript

Get the full transcript of a session with speaker attribution.

Required Scope
transcripts:read

Path Parameters

ParameterTypeDescription
idstringThe session ID

Example Request

curl -H "Authorization: Bearer wave_api_xxx..." \
  https://api.wave.co/v1/sessions/abc123/transcript

Example Response

{
  "id": "abc123",
  "transcript": "John: Good morning everyone...\nJane: Hi John...",
  "segments": [
    {
      "speaker": "John",
      "start": 0.0,
      "end": 5.2,
      "text": "Good morning everyone, let's get started with the standup."
    },
    {
      "speaker": "Jane",
      "start": 5.5,
      "end": 8.1,
      "text": "Hi John, I'll go first if that's okay."
    }
  ]
}
POST

/v1/sessions/search

Perform semantic search across all your sessions using natural language queries.

Required Scope
sessions:search

Request Body

FieldTypeDescription
querystringThe search query (required)
limitintegerMax results to return (default: 10, max: 50)

Example Request

curl -X POST \
  -H "Authorization: Bearer wave_api_xxx..." \
  -H "Content-Type: application/json" \
  -d '{"query": "pricing strategy discussion", "limit": 10}' \
  https://api.wave.co/v1/sessions/search

Example Response

{
  "query": "pricing strategy discussion",
  "results": [
    {
      "id": "abc123",
      "title": "Q1 Planning",
      "timestamp": "2025-01-15T14:00:00Z",
      "type": "meeting",
      "similarity": 0.89,
      "snippet": "...we need to revise our pricing strategy for the enterprise tier..."
    },
    {
      "id": "def456",
      "title": "Sales Team Sync",
      "timestamp": "2025-01-10T10:00:00Z",
      "type": "meeting",
      "similarity": 0.76,
      "snippet": "...the current pricing is competitive but we could consider..."
    }
  ],
  "total": 2
}

Error Codes

All errors return a consistent JSON structure:

CodeStatusDescription
unauthorized401Missing or invalid Authorization header
invalid_token401Token is invalid, expired, or revoked
insufficient_scope403Token lacks required permission
not_found404Session not found
rate_limit_exceeded429Too many requests
internal_error500Server error