Skip to main content
POST
/
v1
/
chat
/
completions
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1704067200,
  "model": "gpt-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello Alex! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 50,
    "completion_tokens": 12,
    "total_tokens": 62
  }
}

Overview

The chat completions endpoint is fully compatible with OpenAI’s API. GetProfile automatically:
  1. Loads the user’s profile
  2. Injects relevant context into the system message
  3. Forwards the request to the upstream provider
  4. Extracts traits and memories in the background

Request

model
string
required
Model to use (e.g., gpt-5, gpt-5-mini)
messages
array
required
Array of message objects
stream
boolean
default:"false"
Enable streaming responses
user
string
User identifier (alternative to X-GetProfile-Id header)
getprofile
object
GetProfile-specific options (stripped before forwarding)

Response

Standard OpenAI chat completion response.
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1704067200,
  "model": "gpt-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello Alex! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 50,
    "completion_tokens": 12,
    "total_tokens": 62
  }
}

Examples

Basic Request

curl https://api.yourserver.com/v1/chat/completions \
  -H "Authorization: Bearer gp_your_key" \
  -H "X-GetProfile-Id: user-123" \
  -H "X-Upstream-Key: sk-openai-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'

Streaming

curl https://api.yourserver.com/v1/chat/completions \
  -H "Authorization: Bearer gp_your_key" \
  -H "X-GetProfile-Id: user-123" \
  -H "X-Upstream-Key: sk-openai-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "messages": [{"role": "user", "content": "Hello!"}],
    "stream": true
  }'

Per-Request Traits

const response = await client.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Help me plan my trip" }],
  // @ts-ignore - GetProfile extension
  getprofile: {
    traits: [
      {
        key: "travel_preferences",
        valueType: "object",
        extraction: { enabled: true },
        injection: { enabled: true, template: "Travel prefs: {{value}}" },
      },
    ],
  },
});

Skip Processing

// Skip context injection (raw request)
const response = await client.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Hello!" }],
  // @ts-ignore
  getprofile: { skipInjection: true },
});

// Skip background extraction
const response = await client.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Hello!" }],
  // @ts-ignore
  getprofile: { skipExtraction: true },
});