Send the OpenAI-shaped request you can verify.

The core Chat Completions path is stable. Tool calls, structured output, and advanced sampling still need a route-specific acceptance test.

Endpoint

HTTP

POST https://aiwave.live/v1/chat/completions

Smallest useful request

curl

curl https://aiwave.live/v1/chat/completions \
  -H "Authorization: Bearer $AIWAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Reply with OK"}],"max_tokens":32}'

Core request fields

FieldTypeRequiredNotes
modelstringyesUse an ID visible to the account
messagesarrayyesOrdered role/content messages
max_tokensintegernoBound output below the route limit
temperaturenumbernoSupport and range can vary by route
top_pnumbernoAvoid changing it with temperature during the first test
streambooleannoUse the streaming contract when true

Route-dependent fields

Field familyExamplesRule
Toolstools, tool_choice, parallel tool callsVerify on the selected model
Structured outputresponse_format, JSON schemaDo not assume identical enforcement
Streaming detailsstream_options, usage chunkVerify the final chunk before relying on it
Sampling controlsstop, penalties, seed, logprobsUnsupported fields may be ignored or rejected

Response shape

Illustrative successful response

{
  "id": "chatcmpl_...",
  "model": "deepseek-v4-flash",
  "choices": [{"message": {"role": "assistant", "content": "OK"}, "finish_reason": "stop"}],
  "usage": {"prompt_tokens": 12, "completion_tokens": 1, "total_tokens": 13}
}

Use the account ledger for the charge.

The response usage object is part of the request evidence. The dated public rate is planning evidence; do not reconstruct the final charge from character counts.