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

# API OpenAI Chat Completions

> Utilisez l’API Chat Completions OpenAI compatible de BetterToken avec une URL de Request complète, une API Key Bearer et des exemples curl, Python et JavaScript.

Appelez Chat Completions OpenAI compatible avec `POST https://www.bettertoken.ai/v1/chat/completions`. La plupart des outils externes utilisent la Base URL `https://www.bettertoken.ai/v1` et ajoutent eux-mêmes `/chat/completions`.

## Paramètres principaux

| Champ            | Valeur                                           |
| ---------------- | ------------------------------------------------ |
| API Key          | BetterToken API Key                              |
| Full request URL | `https://www.bettertoken.ai/v1/chat/completions` |
| Model            | `YOUR_MODEL_ID`                                  |

## Prérequis

* <a href={"https://bettertoken.ai/register"}>Créez une BetterToken API Key</a>
* Copiez un Model ID depuis le <a href={"https://bettertoken.ai/pricing"}>model plaza</a> ou la boîte de dialogue **Setup** de la Key
* Préparez un terminal avec `curl`, ou Python 3 / Node.js

## Installation

<Tabs>
  <Tab title="curl">
    `curl` ne nécessite pas de SDK. Vérifiez que `curl --version` fonctionne dans votre terminal.
  </Tab>

  <Tab title="Python">
    ```bash theme={null}
    python -m pip install openai
    ```
  </Tab>

  <Tab title="JavaScript">
    ```bash theme={null}
    npm install openai
    ```
  </Tab>
</Tabs>

## Configuration manuelle

### curl

```bash theme={null}
curl "https://www.bettertoken.ai/v1/chat/completions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "YOUR_MODEL_ID",
    "messages": [
      {
        "role": "user",
        "content": "Hello"
      }
    ]
  }'
```

### Python SDK

```python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://www.bettertoken.ai/v1",
)

response = client.chat.completions.create(
    model="YOUR_MODEL_ID",
    messages=[
        {"role": "user", "content": "Hello"},
    ],
)

print(response.choices[0].message.content)
```

### JavaScript SDK

```javascript theme={null}
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "YOUR_API_KEY",
  baseURL: "https://www.bettertoken.ai/v1",
});

const response = await client.chat.completions.create({
  model: "YOUR_MODEL_ID",
  messages: [{ role: "user", content: "Hello" }],
});

console.log(response.choices[0].message.content);
```

## Vérifier la connexion

Dans le Playground à droite :

1. Saisissez `YOUR_API_KEY` sous **Authorization**.
2. Remplacez `model` par `YOUR_MODEL_ID`.
3. Modifiez `messages` et envoyez la Request.

Le Playground utilise déjà l’URL complète `https://www.bettertoken.ai/v1/chat/completions`.

Une réponse `200` avec la sortie du modèle dans `choices[0].message.content` confirme la connexion.

## Changer de modèle

Remplacez `YOUR_MODEL_ID` par le Model ID complet du model plaza ou de la boîte de dialogue **Setup**. Ne raccourcissez pas le Model ID selon son nom d’affichage.

## Erreurs fréquentes

| Erreur          | Correction                                                                                                                                      |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `401`           | Confirmez `Authorization: Bearer YOUR_API_KEY`, puis copiez à nouveau la BetterToken API Key.                                                   |
| `404`           | Les appels HTTP directs utilisent `https://www.bettertoken.ai/v1/chat/completions` ; le SDK `base_url` utilise `https://www.bettertoken.ai/v1`. |
| Model not found | Utilisez le Model ID complet du model plaza ou de la boîte de dialogue **Setup**.                                                               |
| Invalid request | Confirmez que `messages` est un tableau et que chaque élément possède `role` et `content`.                                                      |

## Configuration avancée

### Fournisseurs compatibles

| Fournisseur | État                   |
| ----------- | ---------------------- |
| Claude      | Non compatible         |
| GPT         | Configuration manuelle |
| Kimi        | Configuration manuelle |
| GLM         | Configuration manuelle |

<Note>Les états concernent la méthode de configuration de BetterToken décrite sur cette page.</Note>

<Accordion title="Signification des méthodes de configuration">
  * **Configuration manuelle** : saisissez l’API Key, la Base URL et le Model.
  * **Non compatible** : aucune méthode de connexion directe vérifiée n’est disponible pour le moment.
</Accordion>

## Détails techniques

<Accordion title="Base URL et URL complète de Request">
  Les outils qui exigent une URL de Request complète, comme GitHub Copilot et TRAE, utilisent `https://www.bettertoken.ai/v1/chat/completions`. Les outils qui ajoutent eux-mêmes le chemin, comme Cursor, Cline, OpenCode, n8n et Dify, utilisent uniquement `https://www.bettertoken.ai/v1`.
</Accordion>


## OpenAPI

````yaml api-reference/openapi.json POST /v1/chat/completions
openapi: 3.1.0
info:
  title: BetterToken GPT Image 2 API
  description: >-
    OpenAI-compatible image generation and image editing endpoints for
    BetterToken.
  version: 1.0.0
servers:
  - url: https://www.bettertoken.ai
security:
  - bearerAuth: []
paths:
  /v1/chat/completions:
    post:
      tags:
        - OpenAI Chat Completions
      summary: 创建 Chat Completions 响应
      description: >-
        通过 BetterToken 的 OpenAI-compatible Chat Completions API 向 GPT
        提供商模型发送对话消息。适用于需要 /v1/chat/completions 的外部工具和应用。
      operationId: createChatCompletion
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionsRequest'
            example:
              model: YOUR_MODEL_ID
              messages:
                - role: user
                  content: Hello
      responses:
        '200':
          $ref: '#/components/responses/ChatCompletionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ServerError'
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |-
            curl 'https://www.bettertoken.ai/v1/chat/completions' \
              -H 'Authorization: Bearer YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              --data '{
                "model": "YOUR_MODEL_ID",
                "messages": [{"role": "user", "content": "Hello"}]
              }'
components:
  schemas:
    ChatCompletionsRequest:
      type: object
      required:
        - model
        - messages
      properties:
        model:
          type: string
          description: GPT 提供商中可用的模型 ID。请以模型广场当前显示的模型为准。
          example: YOUR_MODEL_ID
        messages:
          type: array
          minItems: 1
          description: 对话消息数组。每项应包含 role 和 content。
          items:
            type: object
            required:
              - role
              - content
            properties:
              role:
                type: string
                example: user
              content:
                type: string
                example: Hello
            additionalProperties: true
        stream:
          type: boolean
          description: 是否请求流式响应。
          default: false
      additionalProperties: true
    ChatCompletionResponse:
      type: object
      description: OpenAI-compatible Chat Completions API 响应。实际字段会随所选模型和请求参数变化。
      additionalProperties: true
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              example: invalid request
            type:
              type: string
              example: invalid_request_error
            code:
              type: string
              example: invalid_request
          additionalProperties: true
        message:
          type: string
          example: insufficient quota
      additionalProperties: true
  responses:
    ChatCompletionResponse:
      description: GPT 提供商模型返回的 Chat Completions API 响应。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ChatCompletionResponse'
    BadRequest:
      description: 请求格式错误、缺少参数、JSON 或 multipart 解析失败、尺寸格式错误。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: API Key 缺失或无效。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    PaymentRequired:
      description: 额度或余额不足。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: 触发限速、并发限制或上游繁忙。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ServerError:
      description: 网关或上游服务异常。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: BetterToken API Key
      description: >-
        Use your BetterToken API Key as a bearer token. Do not expose API keys
        in frontend browser code, screenshots, logs, tickets, or Git
        repositories.

````