> ## 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.

# APIs de texto y chat

> Elige la API de texto y chat de CometAPI que se ajuste al formato de tu solicitud: Chat Completions, Responses, Anthropic Messages o generación de contenido de Gemini.

Usa la documentación de modelos de texto de CometAPI haciendo coincidir el formato de tu solicitud con la página que lo implementa. Para chat compatible con OpenAI, comienza con Chat Completions o Responses; para formatos nativos del proveedor, usa la página correspondiente del proveedor.

## Elige una API de texto y chat

<CardGroup cols={2}>
  <Card title="Crear una finalización de chat" icon="message" href="/api/text/chat">
    Envía mensajes de chat compatibles con OpenAI con un array `messages`.
  </Card>

  <Card title="Crear una respuesta del modelo" icon="sparkles" href="/api/text/responses">
    Usa razonamiento, salida Multimodal y herramientas integradas mediante la API de Responses.
  </Card>

  <Card title="Crear un Message" icon="message" href="/api/text/anthropic-messages">
    Llama flujos de trabajo de Messages compatibles con Claude con campos nativos del proveedor.
  </Card>

  <Card title="Generar contenido" icon="sparkles" href="/api/text/gemini-generating-content">
    Envía solicitudes nativas de generación de contenido de Gemini.
  </Card>
</CardGroup>

## Llamar a un modelo de texto

Usa cualquier model ID con capacidad de texto de la [página de Models](/es/overview/models) o del [directorio de modelos](https://www.cometapi.com/models/). Los ejemplos siguientes llaman al endpoint compatible con OpenAI de Chat Completions.

<Note>
  Estos ejemplos usan el marcador de posición `your-model-id`. Sustitúyelo por un model ID de texto disponible de la [página de Models](/es/overview/models) o del [directorio de modelos](https://www.cometapi.com/models/) antes de ejecutar la solicitud.
</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>

## Ejemplo de respuesta

Una respuesta correcta puede verse así. Los valores de los campos varían según el modelo y la solicitud:

```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
  }
}
```

## Registros de ejemplo de modelos

<Info>
  Esta respuesta de ejemplo del catálogo de modelos muestra el contenedor de `/api/models` y la forma de un registro de modelo de texto. No es una lista completa de modelos.
</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
      }
    }
  ]
}
```

## Errores comunes

<AccordionGroup>
  <Accordion title="Clave de API faltante o no válida">
    Envía `Authorization: Bearer $COMETAPI_KEY`.
  </Accordion>

  <Accordion title="URL base incorrecta">
    Usa `https://api.cometapi.com/v1` para solicitudes compatibles con OpenAI.
  </Accordion>

  <Accordion title="Tipo de modelo incorrecto">
    Elige un modelo con capacidad de texto de la [página de modelos](/es/overview/models).
  </Accordion>

  <Accordion title="Error de parámetro específico del proveedor">
    Elimina los campos opcionales y luego vuelve a agregar los campos uno por uno.
  </Accordion>
</AccordionGroup>

## Códigos de error y estrategia de reintento

<AccordionGroup>
  <Accordion title="400">
    No reintentes hasta que se corrija el cuerpo de la solicitud.
  </Accordion>

  <Accordion title="401">
    No reintentes hasta que la clave de API esté presente y sea válida.
  </Accordion>

  <Accordion title="404">
    Verifica la URL base, la ruta y el model ID antes de reintentar.
  </Accordion>

  <Accordion title="429">
    Reintenta con retroceso exponencial y reduce la concurrencia.
  </Accordion>

  <Accordion title="500 or 503">
    Reintenta con retroceso para errores transitorios del proveedor o del servicio.
  </Accordion>
</AccordionGroup>

<Tip>
  Para patrones de implementación, consulta [Códigos de error y estrategia de reintento](/es/guides/error-codes-and-retry-strategy) y [Límites de tasa y concurrencia](/es/guides/rate-limits-and-concurrency).
</Tip>

## Precios y directorio de modelos

<CardGroup cols={3}>
  <Card title="Página de modelos" icon="list" href="/overview/models">
    Lee cómo CometAPI expone los model IDs en la documentación.
  </Card>

  <Card title="Directorio de modelos" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    Explora la disponibilidad y las capacidades de los modelos.
  </Card>

  <Card title="Precios" icon="tag" href="https://www.cometapi.com/pricing/">
    Consulta los precios antes de llamar a un modelo.
  </Card>
</CardGroup>
