> ## Documentation Index
> Fetch the complete documentation index at: https://doc.tokendog.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Structured output

> Constrain the model to return JSON via response_format

Use `response_format` with a JSON Schema and the model returns strictly structured JSON your code can parse directly.

<CodeGroup>
  ```bash curl theme={null}
  curl https://tokendog.io/v1/chat/completions \
    -H "Authorization: Bearer $TOKENDOG_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model":"gpt-5",
      "messages":[{"role":"user","content":"Extract: John Doe, age 28"}],
      "response_format":{"type":"json_schema","json_schema":{
        "name":"person","schema":{"type":"object",
          "properties":{"name":{"type":"string"},"age":{"type":"integer"}},
          "required":["name","age"],"additionalProperties":false}}}
    }'
  ```

  ```python Python theme={null}
  from openai import OpenAI
  client = OpenAI(base_url="https://tokendog.io/v1", api_key="YOUR_TOKENDOG_API_KEY")
  resp = client.chat.completions.create(
      model="gpt-5",
      messages=[{"role":"user","content":"Extract: John Doe, age 28"}],
      response_format={"type":"json_schema","json_schema":{
          "name":"person","schema":{"type":"object",
              "properties":{"name":{"type":"string"},"age":{"type":"integer"}},
              "required":["name","age"],"additionalProperties":False}}},
  )
  print(resp.choices[0].message.content)
  ```

  ```javascript Node theme={null}
  import OpenAI from "openai";
  const client = new OpenAI({ baseURL:"https://tokendog.io/v1", apiKey:"YOUR_TOKENDOG_API_KEY" });
  const resp = await client.chat.completions.create({
    model:"gpt-5",
    messages:[{role:"user",content:"Extract: John Doe, age 28"}],
    response_format:{type:"json_schema",json_schema:{
      name:"person",schema:{type:"object",
        properties:{name:{type:"string"},age:{type:"integer"}},
        required:["name","age"],additionalProperties:false}}},
  });
  console.log(resp.choices[0].message.content);
  ```
</CodeGroup>

<Tip>The content is a schema-conforming JSON string — parse it directly with `JSON.parse` / `json.loads`.</Tip>
