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

# Inicio rápido de Gemini API: usa solicitudes nativas y compatibles con OpenAI con CometAPI

> Llama a modelos de texto de Gemini a través de CometAPI con solicitudes nativas de generateContent o solicitudes de Chat Completions compatibles con OpenAI.

## Lo que vas a crear

Enviarás una solicitud nativa de Gemini `POST /v1beta/models/\{model\}:generateContent`, y luego la compararás con la opción compatible con OpenAI `POST /v1/chat/completions` para aplicaciones que ya usan formatos de solicitud de Chat Completions.

## Requisitos previos

* Una clave de API de CometAPI almacenada en `COMETAPI_KEY`
* Un model ID de modelo de texto de Gemini de la [página de modelos](/es/overview/models)
* `curl`, Python 3.10+ o Node.js 18+

## Clave de API, URL base, autenticación

Usa el endpoint nativo de Gemini cuando quieras campos de solicitud de Gemini:

```text theme={null}
https://api.cometapi.com/v1beta/models/{model}:generateContent
```

Usa `x-goog-api-key` para solicitudes HTTP nativas directas de Gemini:

```text theme={null}
x-goog-api-key: $COMETAPI_KEY
```

Usa la URL base compatible con OpenAI solo cuando tu aplicación ya use Chat Completions:

```text theme={null}
https://api.cometapi.com/v1
```

## Formato nativo de Gemini

Las solicitudes nativas de Gemini usan `contents`, `parts` y `generationConfig`. Usa esta ruta cuando necesites campos específicos de Gemini, como controles de thinking, partes multimedia, grounding de Google Search u operadores nativos de Streaming.

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.cometapi.com/v1beta/models/your-gemini-model-id:generateContent" \
    -H "x-goog-api-key: $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [
        {
          "parts": [
            {
              "text": "Explain why base URL configuration matters."
            }
          ]
        }
      ],
      "generationConfig": {
        "temperature": 0.3
      }
    }'
  ```

  ```python Python theme={null}
  import os
  from google import genai

  client = genai.Client(
      api_key=os.environ["COMETAPI_KEY"],
      http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
  )

  response = client.models.generate_content(
      model="your-gemini-model-id",
      contents="Explain why base URL configuration matters.",
      config={
          "temperature": 0.3,
      },
  )

  print(response.text)
  ```

  ```javascript Node.js theme={null}
  import { GoogleGenAI } from "@google/genai";

  const ai = new GoogleGenAI({
    apiKey: process.env.COMETAPI_KEY,
    httpOptions: {
      baseUrl: "https://api.cometapi.com",
      apiVersion: "v1beta",
    },
  });

  const response = await ai.models.generateContent({
    model: "your-gemini-model-id",
    contents: "Explain why base URL configuration matters.",
    config: {
      temperature: 0.3,
    },
  });

  console.log(response.text);
  ```
</CodeGroup>

## Opción compatible con OpenAI

Usa la ruta compatible con OpenAI cuando estés migrando un SDK de OpenAI o una aplicación de Chat Completions existente y no necesites campos de solicitud nativos de Gemini.

<CodeGroup>
  ```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-gemini-model-id",
      "messages": [
        {
          "role": "user",
          "content": "Explain why base URL configuration matters."
        }
      ]
    }'
  ```

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

  client = OpenAI(
      api_key=os.environ["COMETAPI_KEY"],
      base_url="https://api.cometapi.com/v1",
  )

  completion = client.chat.completions.create(
      model="your-gemini-model-id",
      messages=[
          {
              "role": "user",
              "content": "Explain why base URL configuration matters.",
          }
      ],
  )

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

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

  const client = new OpenAI({
    apiKey: process.env.COMETAPI_KEY,
    baseURL: "https://api.cometapi.com/v1",
  });

  const completion = await client.chat.completions.create({
    model: "your-gemini-model-id",
    messages: [
      {
        role: "user",
        content: "Explain why base URL configuration matters.",
      },
    ],
  });

  console.log(completion.choices[0].message.content);
  ```
</CodeGroup>

## Explicación del flujo

| Ruta                  | Endpoint                                        | Formato de solicitud                               | SDK                                | Usar cuando                                                                                                       |
| --------------------- | ----------------------------------------------- | -------------------------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Nativo de Gemini      | `POST /v1beta/models/\{model\}:generateContent` | `contents`, `parts`, `generationConfig`            | SDK de Google GenAI o HTTP directo | Necesitas campos específicos de Gemini, partes multimodales, controles de thinking, grounding o Streaming nativo. |
| Compatible con OpenAI | `POST /v1/chat/completions`                     | `messages`, `temperature`, `max_completion_tokens` | SDK de OpenAI o HTTP directo       | Tu aplicación ya usa Chat Completions y solo necesita un modelo de texto de Gemini detrás de ese formato.         |

No mezcles los dos formatos de solicitud. Los campos nativos de Gemini como `contents` y `generationConfig` pertenecen a la ruta `generateContent`. Los campos de Chat Completions como `messages` pertenecen a la ruta compatible con OpenAI.

## Solución de problemas / Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Con qué ruta debería empezar?">
    Empieza con `generateContent` nativo de Gemini cuando estés creando un nuevo flujo de trabajo de Gemini. Usa la ruta compatible con OpenAI cuando una aplicación existente ya dependa del SDK de OpenAI o de formatos de solicitud de Chat Completions.
  </Accordion>

  <Accordion title="Los campos nativos de Gemini fallan en Chat Completions">
    Envía solicitudes de `contents`, `parts`, `generationConfig` y `streamGenerateContent` al endpoint nativo de Gemini. La ruta compatible con OpenAI espera `messages` y parámetros de Chat Completions.
  </Accordion>

  <Accordion title="El model ID de Gemini falla">
    Confirma que el model ID esté disponible para tu cuenta y sea compatible con la ruta que estás llamando. Usa la [página de modelos](/es/overview/models) para encontrar los model ID actuales.
  </Accordion>

  <Accordion title="El SDK apunta al servicio incorrecto">
    Para solicitudes del SDK de Google GenAI, establece la URL base en `https://api.cometapi.com`. Para solicitudes del SDK de OpenAI, establece `base_url` en Python o `baseURL` en Node.js en `https://api.cometapi.com/v1`.
  </Accordion>
</AccordionGroup>

## Próximos pasos

* Usa la [referencia de la API nativa de Gemini](/api/text/gemini-generating-content) para ver todos los campos de solicitud y respuesta de `generateContent`.
* Lee la [referencia de la API de Chat Completions](/api/text/chat) para el formato de solicitud compatible con OpenAI.
* Configura clientes del SDK de OpenAI en [Usar CometAPI con SDKs de OpenAI](/es/guides/use-cometapi-with-openai-sdk).
* Enumera los modelos disponibles con [List available CometAPI models](/es/guides/how-to-list-available-models).
* Añade manejo de reintentos y límites de tasa con [Error codes and retry strategy](/es/guides/error-codes-and-retry-strategy).
