Skip to main content

Overview

QWave API endpoints fall into two categories:

Synchronous Endpoints

The request blocks until the result is ready. Best for fast operations like text generation and speech synthesis.

Asynchronous Tasks

The request returns a task_id immediately. Retrieve results via polling or webhook. Best for long-running jobs like image and video generation.

Synchronous Endpoints

These endpoints return results directly once processing completes:
EndpointPurpose
/v1/chat/completionsText generation (OpenAI compatible)
/v1/messagesText generation (Claude native)
/v1/beta/models/{model}:generateContentText generation (Gemini native)
/v1/audio/speechTTS text-to-speech
/v1/audio/transcriptionsSTT speech recognition
/v1/images/generationsSynchronous image generation
/v1/embeddingsText embeddings
/v1/responsesOpenAI Responses API

Asynchronous Task Endpoints

Image and video generation use a unified asynchronous task system:
EndpointPurpose
POST /v1/tasksSubmit an asynchronous task and receive a task_id
GET /v1/tasks/{task_id}Query task status and results
POST /v1/tasks/{task_id}/cancelCancel a queued task
The task family is async-only. For “submit and wait” semantics, use POST /v1/tasks with a Prefer: wait=N header (N ≤ 60 seconds): if the task finishes within the window the full result is returned directly; otherwise the current state is returned and you continue polling. See Submit Task.

Choosing the Right Pattern

  • Text chat → Use synchronous endpoints with SSE streaming
  • Image generation/v1/images/generations for simple cases, /v1/tasks for advanced workflows
  • Video generation → Use /v1/tasks (operations are long-running)
  • Need callback notifications → Use /v1/tasks with callback_url