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

# API teks dan chat

> Pilih API teks dan chat CometAPI yang sesuai dengan format permintaan Anda: Chat Completions, Responses, Anthropic Messages, atau pembuatan konten Gemini.

Gunakan dokumentasi model teks CometAPI dengan mencocokkan format permintaan Anda ke halaman yang mengimplementasikannya. Untuk chat yang kompatibel dengan OpenAI, mulai dengan Chat Completions atau Responses; untuk format native penyedia, gunakan halaman penyedia yang sesuai.

## Pilih API teks dan chat

<CardGroup cols={2}>
  <Card title="Buat chat completion" icon="message" href="/api/text/chat">
    Kirim pesan chat yang kompatibel dengan OpenAI dengan array messages.
  </Card>

  <Card title="Buat respons model" icon="sparkles" href="/api/text/responses">
    Gunakan reasoning, output multimodal, dan tools bawaan melalui API Responses.
  </Card>

  <Card title="Buat Message" icon="message" href="/api/text/anthropic-messages">
    Panggil alur kerja Messages yang kompatibel dengan Claude dengan field native penyedia.
  </Card>

  <Card title="Hasilkan konten" icon="sparkles" href="/api/text/gemini-generating-content">
    Kirim permintaan pembuatan konten native Gemini.
  </Card>
</CardGroup>

## Panggil model teks

Gunakan model ID apa pun yang mendukung teks dari [halaman Models](/id/overview/models) atau [direktori model](https://www.cometapi.com/models/). Contoh di bawah ini memanggil endpoint Chat Completions yang kompatibel dengan OpenAI.

<Note>
  Contoh-contoh ini menggunakan placeholder `your-model-id`. Ganti dengan model ID teks yang tersedia dari [halaman Models](/id/overview/models) atau [direktori model](https://www.cometapi.com/models/) sebelum Anda menjalankan permintaan.
</Note>

<CodeGroup>
  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.cometapi.com/v1/chat/completions",
      headers={
          "Authorization": "Bearer " + os.environ["COMETAPI_KEY"],
          "Content-Type": "application/json",
      },
      json={
          "model": "your-model-id",
          "messages": [
              {
                  "role": "user",
                  "content": "Write one sentence about CometAPI.",
              }
          ],
      },
      timeout=30,
  )

  response.raise_for_status()
  result = response.json()
  print(result["choices"][0]["message"]["content"])
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://api.cometapi.com/v1/chat/completions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "your-model-id",
      messages: [
        {
          role: "user",
          content: "Write one sentence about CometAPI.",
        },
      ],
    }),
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }

  const result = await response.json();
  console.log(result.choices[0].message.content);
  ```

  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/chat/completions \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "your-model-id",
      "messages": [
        {
          "role": "user",
          "content": "Write one sentence about CometAPI."
        }
      ]
    }'
  ```
</CodeGroup>

## Contoh respons

Respons yang berhasil dapat terlihat seperti ini. Nilai field bervariasi menurut model dan permintaan:

```json theme={null}
{
  "id": "chatcmpl_example",
  "object": "chat.completion",
  "created": 1779960520,
  "model": "your-model-id",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "CometAPI lets developers route model requests through one API surface."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 14,
    "total_tokens": 26
  }
}
```

## Contoh rekaman model

<Info>
  Respons katalog model contoh ini menunjukkan envelope `/api/models` dan bentuk satu rekaman model teks. Ini bukan daftar model yang lengkap.
</Info>

```bash cURL theme={null}
curl https://api.cometapi.com/api/models
```

```json theme={null}
{
  "success": true,
  "page": 1,
  "page_size": 20,
  "total": 302,
  "data": [
    {
      "created": 1773798949,
      "id": "your-text-model-id",
      "code": "your-text-model-id",
      "provider": "ExampleProvider",
      "provider_code": "example",
      "name": "Example text model",
      "model_type": "text",
      "features": [
        "text-to-text"
      ],
      "endpoints": "{\n  \"openai-chat\": {\n    \"path\": \"/v1/chat/completions\",\n    \"method\": \"POST\"\n  }\n}",
      "pricing": {
        "currency": "USD / M Tokens",
        "input": 0.5,
        "output": 1.5,
        "per_request": null,
        "per_second": null
      }
    }
  ]
}
```

## Kesalahan umum

<AccordionGroup>
  <Accordion title="API key hilang atau tidak valid">
    Kirim `Authorization: Bearer $COMETAPI_KEY`.
  </Accordion>

  <Accordion title="Base URL salah">
    Gunakan `https://api.cometapi.com/v1` untuk permintaan yang kompatibel dengan OpenAI.
  </Accordion>

  <Accordion title="Jenis model salah">
    Pilih model yang mendukung teks dari [halaman Models](/id/overview/models).
  </Accordion>

  <Accordion title="Kesalahan parameter khusus provider">
    Hapus field opsional, lalu tambahkan kembali field tersebut satu per satu.
  </Accordion>
</AccordionGroup>

## Kode error dan strategi retry

<AccordionGroup>
  <Accordion title="400">
    Jangan retry sampai body permintaan diperbaiki.
  </Accordion>

  <Accordion title="401">
    Jangan retry sampai API key tersedia dan valid.
  </Accordion>

  <Accordion title="404">
    Periksa base URL, path, dan model ID sebelum retry.
  </Accordion>

  <Accordion title="429">
    Retry dengan exponential backoff dan kurangi concurrency.
  </Accordion>

  <Accordion title="500 or 503">
    Retry dengan backoff untuk kesalahan provider atau layanan yang bersifat sementara.
  </Accordion>
</AccordionGroup>

<Tip>
  Untuk pola implementasi, lihat [Kode error dan strategi retry](/id/guides/error-codes-and-retry-strategy) dan [Rate limits dan concurrency](/id/guides/rate-limits-and-concurrency).
</Tip>

## Harga dan direktori model

<CardGroup cols={3}>
  <Card title="Halaman Models" icon="list" href="/overview/models">
    Baca bagaimana CometAPI menampilkan model ID di dokumentasi.
  </Card>

  <Card title="Direktori model" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    Jelajahi ketersediaan dan kapabilitas model.
  </Card>

  <Card title="Harga" icon="tag" href="https://www.cometapi.com/pricing/">
    Periksa harga sebelum Anda memanggil model.
  </Card>
</CardGroup>
