Documentation without the maze
Start from
what already runs.
Shape
Follow the request shape, inspect the expected response, and keep asynchronous work visible until it reaches a terminal state.
Table 1 — the paths
Five paths, three behaviours.
| Method | Path | Contract | Returns | Behaviour |
|---|---|---|---|---|
| POST | /v1/chat/completions | OpenAI-compatible | Message | Synchronous |
| POST | /v1/messages | Claude native | Message | Synchronous |
| POST | /v1/images/generations | Generation | Result URL | Synchronous |
| POST | /v1/images/edits | Multipart | Result URL | Synchronous |
| POST | /v1/video/generations | Generation | Task id | Asynchronous |
| GET | /v1/video/generations/{task_id} | Generation | Status, then URL | Poll to terminal |
Paths are listed as published. The active catalog and the model identifiers behind each path are confirmed at the point of use.
The one you will write first
If your client already speaks this shape, the only thing that changes is the model name in the body.
POST /v1/chat/completions
curl https://aiwave.live/v1/chat/completions \
-H "Authorization: Bearer $AIWAVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"your-model-id",
"messages":[{"role":"user",
"content":"Ship one representative request."}]}'