Skip to main content

Chat Completions

Create a chat completion using the Vexrail API. This endpoint is compatible with the OpenAI chat completions format and supports both streaming and non-streaming responses.

Endpoint​

POST /v1/chat/completions

Authentication​

Requires x-publishable-key and x-secret-key headers. See Authentication.

Request Body​

FieldTypeRequiredDescription
modelstringYesThe model to use for the completion. See Models for available options.
messagesarrayYesAn array of message objects representing the conversation history.
streambooleanNoIf true, the response is streamed as Server-Sent Events. Default: false.
temperaturenumberNoSampling temperature between 0 and 2. Higher values make output more random.
max_tokensnumberNoMaximum number of tokens to generate in the response.
top_pnumberNoNucleus sampling parameter. An alternative to temperature.

Message Object​

FieldTypeDescription
rolestringThe role of the message author: system, user, or assistant.
contentstringThe content of the message.

Non-Streaming Response​

Example Request​

curl -X POST https://api.vexrail.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "x-publishable-key: pk_live_your_key" \
-H "x-secret-key: sk_live_your_key" \
-H "x-conversation-id: conv-123" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What tools can help me manage my projects?"}
]
}'

Example Response​

{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1700000000,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "There are several great project management tools available..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 150,
"total_tokens": 175
}
}

Streaming Response​

To receive a streaming response, set stream: true in the request body. The response uses Server-Sent Events (SSE).

Example Request​

curl -X POST https://api.vexrail.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "x-publishable-key: pk_live_your_key" \
-H "x-secret-key: sk_live_your_key" \
-H "x-conversation-id: conv-123" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "user", "content": "What tools can help me manage my projects?"}
],
"stream": true
}'

Example Response​

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1700000000,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"role":"assistant","content":"There"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1700000000,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":" are"},"finish_reason":null}]}

...

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1700000000,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

Conversation Tracking​

Include the x-conversation-id header to group messages into a conversation. This enables:

  • Better contextual relevance for product promotions.
  • Conversation analytics in your dashboard.

If you omit this header, each request is treated as an independent interaction.

Promotions in Responses​

When monetization is enabled on your project and relevant advertiser products match the conversation context, the AI response may include contextual product recommendations. These are included naturally within the response content -- no additional parsing is needed on your end.

Error Codes​

StatusDescription
400Invalid request body (missing model, empty messages, etc.)
401Authentication failed
403Domain not verified or insufficient credit balance
500Internal server error

See Errors for details.