Skip to content
WP EngineDocumentation

Getting started

This guide walks you from browsing the catalog to a working chat completion.

The catalog is public — no API key is required. Use it to discover model identifiers you will pass as the model field later.

Terminal window
curl https://api.ai.wpengine.com/v1/models

Truncated response:

{
"object": "list",
"data": [
{
"id": "google/gemini-3.5-flash",
"object": "model",
"owned_by": "google",
"provider": "google",
"display_name": "Gemini 3.5 Flash",
"context_window": 1048576,
"pricing": {
"input_per_million": "1.5",
"output_per_million": "9",
"pricing_version": "2026-05-01",
"unit": "credits"
}
}
]
}

Pick a model id from the response — you will pass it as the model field when you make a chat completion.

Create a key and copy the secret somewhere safe — it is shown once.

For this guide, an Account key with Full access is the quickest option; any key with Chat set to Write will do. Put it in an environment variable so the commands below can use it without pasting the secret:

Terminal window
export AI_API_KEY="wpe_xxx"
Terminal window
curl https://api.ai.wpengine.com/v1/chat/completions \
-H "Authorization: Bearer $AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemini-3.5-flash",
"messages": [
{"role": "system", "content": "You are concise."},
{"role": "user", "content": "What is the speed of light in km/s?"}
]
}'

Truncated response:

{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1716240000,
"model": "google/gemini-3.5-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Approximately 299,792 km/s."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 15,
"completion_tokens": 9,
"completion_tokens_details": {
"reasoning_tokens": 120
},
"total_tokens": 144
}
}

On reasoning models, total_tokens also includes the tokens the model spent reasoning before it answered, reported separately in completion_tokens_details.reasoning_tokens, so it can be larger than prompt_tokens plus completion_tokens.

Set "stream": true in the request body to receive a stream of Server-Sent Events. Each event is a JSON chunk shaped like chat.completion.chunk; the stream terminates with data: [DONE].

See streaming a chat completion for a complete walkthrough.


Last updated: