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

# Créditos y límites: precios, retenciones, concurrencia y límites de tasa

> Cuánto cuesta cada tarea, cómo se retienen y cobran los créditos y qué límites devuelven 429 o 503.

Cada tarea tiene un precio en créditos. El precio se retiene al enviar, se cobra cuando la tarea se completa y se libera si falla. Tu plan fija cuántas tareas puedes tener en cola o en ejecución a la vez.

Para la lista en vivo de motores y precios, llama al endpoint público de capacidades. No necesita clave de API:

```bash theme={"theme":"css-variables"}
curl https://api.querying.ai/v1/capabilities
```

Añade `?taskType=GEMINI` para leer un solo motor. Se aceptan alias como `GOOGLE_AIO`. Consulta [Obtener capacidades](/es/api-reference/capabilities.md).

## Créditos por tarea

| `taskType` | Créditos |
| - | - |
| `CHATGPT` | 1 por respuesta. Cada entrada de `payload.followUps` es otra respuesta. |
| `PERPLEXITY`, `BING_COPILOT`, `META_AI` | 1 |
| `GEMINI`, `GOOGLE` (`GOOGLE_AIO`), `AIMODE` (`GOOGLE_AIMODE`), `NAVER_AI_BRIEF`, `NAVER_AI_TAB`, `QWEN`, `DOUBAO` | 1,25 |
| `GOOGLE_SERP`, `NAVER_SERP`, `BING_SEARCH`, `REDDIT` | 1 |
| `COMMERCE_SERP` | 3 |
| `COMMERCE_PRODUCT` | 3 |
| `WEB_SCRAPE`, `WEB_MAP` | 1 |
| `WEB_CRAWL` | 1 por página devuelta. Retiene `maxPages` créditos al enviar; las páginas que no pudo leer no se cobran. |
| `KEYWORD_VOLUME` | 3 por tarea (hasta 100 palabras clave) |
| `PROMPT_RESEARCH` | 11 |
| `GEO_SCORE` | 10 por página, más 5 por imagen cuyo texto se lee (`images.read`, hasta 12). Retiene 70 al enviar; las imágenes que no pudo leer no se cobran y una imagen que reutiliza una lectura de los últimos 90 días (`images.reused`) cuesta 2. |
| `AI_RENDERING` ([AI Rendering](/es/research/ai-rendering.md)) | 5 por renderizado, más 5 por imagen cuyo texto se lee y 2 por imagen que reutiliza una lectura de los últimos 90 días, hasta 12. Retiene 65 al enviar. Una actualización cuesta lo mismo. |
| Preguntas de una consulta de [Product Lookup](/es/research/product-lookup.md#precio) | 10 por producto (el producto y cada competidor) y 5 por prompt de compra, sean cuales sean los motores. Cada pregunta es una tarea de motor y se cobra su parte de ese precio en lugar del precio del motor indicado arriba. |
| Place Lookup (`POST /v1/place-lookup`) | 10 por consulta a los motores predeterminados del país: 1 por pregunta en `KR` y 1,25 en los demás países. Una consulta a menos motores paga las preguntas que envía. Consulta [Place Lookup](/es/research/place-lookup.md). |
| `CITATION_ANALYSIS` | Medido por uso, hasta el importe retenido. Consulta más abajo. |

| Complemento | Créditos |
| - | - |
| `payload.include.analysis` | 2 además del precio del motor, cobrados solo cuando `analysis.status` es `ok` |
| `payload.include.html` | 0,25 en `CHATGPT`, `PERPLEXITY` y `META_AI`, cobrados solo cuando `html.status` es `ok`. Gratis en `GEMINI`, `GOOGLE` y `AIMODE`. |
| `payload.include.citationAnalysis` | Una tarea `CITATION_ANALYSIS` aparte, cobrada por uso |
| Lectura de competidores del monitor | 80 créditos cada 30 días por monitor, repartidos entre sus ejecuciones. Consulta [Monitorización GEO](/es/monitors.md#coste-y-calendario). |

Los precios no varían según el plan; lo que varía es el valor en dólares de un crédito. Los créditos pueden tener dos decimales, como `1.25`.

### Medición de Citation Analysis

Una tarea `CITATION_ANALYSIS` retiene `20 + 12 × citations + 80 × ⌈answer characters ÷ 1,000⌉` créditos al enviar. Al completarse se cobra `1 + ⌈input tokens ÷ 500⌉ + ⌈output tokens ÷ 100⌉ + 2 × source fetches`, nunca más de lo retenido. El resto de la retención se libera. Consulta [Citation Analysis](/es/research/citation-analysis.md).

## Retención, cobro y liberación

**1. Envío: retención**

El precio de la tarea (para `WEB_CRAWL`, `GEO_SCORE` y `CITATION_ANALYSIS`, el máximo) pasa de tu saldo disponible a una retención. Si el saldo no lo cubre, el envío devuelve `402 INSUFFICIENT_CREDITS`. La respuesta del envío muestra `credits` en `0`.

**2. Completada: cobro**

El cargo se toma de la retención. El sondeo final y el webhook lo muestran en `creditsCharged`.

**3. Fallida: liberación**

La retención vuelve a tu saldo. Una tarea fallida cuesta `0`.

Una cuenta nueva recibe 500 créditos al registrarse.

## Consulta tu saldo

`GET /v1/credits` devuelve los créditos de tu cuenta. Consultarlo no cuesta nada, así que un programa puede revisarlo antes de cada lote. Consulta [Saldo de créditos](/es/api-reference/credits.md).

```bash theme={"theme":"css-variables"}
curl https://api.querying.ai/v1/credits \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

```json theme={"theme":"css-variables"}
{
  "success": true,
  "remaining": 1879939,
  "perCycle": 1000000,
  "cycleResetsAt": "2026-11-14T07:37:57.000Z",
  "reserved": 61,
  "plan": "max",
  "topUpBalance": { "credits": 1000000, "nextExpiresAt": "2027-01-19T10:01:57.000Z", "nextCredits": 1000000 }
}
```

* `remaining` es lo que puedes gastar ahora. Las tareas que ya enviaste retienen su precio en `reserved`, así que no lo restes otra vez.
* `perCycle` es lo que tu plan otorga en cada ciclo y `cycleResetsAt` es cuándo termina el ciclo actual. Ambos son `null` sin un plan activo.
* `topUpBalance` indica los créditos de recarga incluidos en `remaining`, con la fecha en que caducan los siguientes y cuántos son. Es `null` si no tienes ninguno. Los créditos de recarga duran tres meses desde la compra, se conservan al renovar y se gastan después de los créditos del plan.

La clave de una subcuenta recibe `403 SUB_ACCOUNT_FORBIDDEN`, porque una subcuenta gasta tus créditos. Consulta [Subcuentas](/es/sub-accounts.md).

## Consulta tu uso

`GET /v1/usage` devuelve los créditos que se cobraron a tu cuenta en un rango de fechas UTC, desglosados por día, motor y clave de API según elijas. Consultarlo no cuesta nada. Consulta [Uso de créditos](/es/api-reference/usage.md).

```bash theme={"theme":"css-variables"}
curl "https://api.querying.ai/v1/usage?from=2026-10-01&to=2026-10-20&groupBy=engine" \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

```json theme={"theme":"css-variables"}
{
  "success": true,
  "data": {
    "from": "2026-10-01",
    "to": "2026-10-20",
    "groupBy": ["engine"],
    "credits": 66.25,
    "tasks": 65,
    "rows": [
      { "taskType": "CHATGPT", "credits": 49, "tasks": 49 },
      { "taskType": "GEMINI", "credits": 6.25, "tasks": 5 },
      { "taskType": "PERPLEXITY", "credits": 11, "tasks": 11 }
    ]
  }
}
```

* `from` y `to` son fechas UTC y se incluyen los dos días. Por defecto son el primer día del mes UTC actual y hoy. Un rango abarca como máximo 366 días.
* `groupBy` acepta `day`, `engine` y `key`, separados por comas, y por defecto es `day,engine`. Cada fila tiene los campos de los desgloses que elegiste, y una combinación sin cobros no tiene fila. `credits` y `tasks` en la parte superior suman todas las filas.
* `groupBy=key` muestra quién gastó los créditos. Una tarea enviada con una clave de API tiene `"source": "api"` y un `apiKey` con su `id`, `keyPrefix`, `name` y `subAccountId`. El gasto sin clave de API tiene `source` con el valor `monitor` (las ejecuciones de un monitor), `playground` o `dashboard`, y `apiKey` es `null`.
* El uso suma lo que se cobró a las tareas, y una tarea fallida cuesta `0`. La lectura de competidores de un monitor se cobra sin una tarea, así que baja tu saldo pero no aparece en el uso.
* Las tareas de tus [subcuentas](/es/sub-accounts.md) están en tu uso, y `apiKey.subAccountId` indica la subcuenta propietaria de una clave. [`GET /v1/sub-accounts/{id}/usage`](/es/api-reference/sub-accounts/get-usage) lee una sola subcuenta. La clave de una subcuenta recibe `403 SUB_ACCOUNT_FORBIDDEN`.

## Consulta tu cola

`GET /v1/async/status` devuelve tus tareas en cola y en ejecución junto al límite de concurrencia en el que cuentan. Consultarlo no cuesta nada. Consulta [Estado de la cola](/es/api-reference/queue-status.md).

```bash theme={"theme":"css-variables"}
curl https://api.querying.ai/v1/async/status \
  -H "Authorization: Bearer $QUERYING_API_KEY"
```

```json theme={"theme":"css-variables"}
{
  "success": true,
  "queuedTasks": 19,
  "processingTasks": 6,
  "priorityBreakdown": [{ "priority": 8, "count": 3 }, { "priority": 1, "count": 16 }],
  "concurrency": { "used": 25, "max": 200 }
}
```

* `concurrency.used` es `queuedTasks` más `processingTasks`, los dos recuentos que suma el [límite de concurrencia](#concurrencia-del-plan) de tu plan. `max` es ese límite, así que `max - used` es el margen que queda para tareas nuevas.
* `priorityBreakdown` enumera las tareas en cola según la `priority` con la que se enviaron, de mayor a menor.
* Los recuentos incluyen las tareas de tus subcuentas, que comparten tu límite. La clave de una subcuenta recibe `403 SUB_ACCOUNT_FORBIDDEN` y lee sus propios recuentos en [`GET /stats`](/es/api-reference/stats).

## Planes

| Plan | Precio mensual | Créditos al mes | Tareas simultáneas |
| - | - | - | - |
| Free | \$0 | 500 al registrarse | 2 |
| Basic | \$20 | 8.000 | 50 |
| Pro | \$200 | 170.000 | 200 |
| Scale | \$500 | 480.000 | 500 |
| Max | \$1.000 | 1.000.000 | 1.000 |

Compara los planes en la [página de precios](https://querying.ai/es/pricing).

### Concurrencia del plan

El límite de concurrencia cuenta juntas las tareas `QUEUED` y `PROCESSING` de tu cuenta. No limita lo rápido que envías. Un envío que lo superaría devuelve `429 PLAN_CONCURRENCY_LIMIT` con `details.limit`, `details.active` y `Retry-After`. Un contrato puede fijar otro límite para tu cuenta, y una cuenta principal puede fijar uno para una [subcuenta](/es/sub-accounts.md).

## Límites por clave y por subcuenta

| Límite | Dónde se configura | Al alcanzarlo |
| - | - | - |
| Límite diario de créditos de una clave de API | Gestiona la clave en el [panel](https://querying.ai/dashboard/keys), de 0,01 a 20.000.000 créditos | `429 KEY_DAILY_CREDIT_LIMIT` hasta la próxima medianoche UTC. `Retry-After` cuenta los segundos que faltan. |
| `monthlyCreditLimit` de una subcuenta | La cuenta principal. Consulta [Subcuentas](/es/sub-accounts.md). | `429 SUB_ACCOUNT_CREDIT_LIMIT` |

El límite diario de la clave cuenta la retención que necesita una tarea, así que una tarea se rechaza cuando `used + price` superaría el límite.

## Tasa de solicitudes y contrapresión

| Límite | Respuesta |
| - | - |
| 1.200 solicitudes por minuto por credencial `Authorization` en `/v1/*` | `429` del edge |
| 6.000 solicitudes por minuto por IP de origen | `429` del edge |
| La cola de un motor está llena | `503 QUEUE_BACKPRESSURE` con `Retry-After` |
| La admisión está saturada | `503 SERVER_OVERLOADED` con `Retry-After` |
| La cola global de tareas está llena | `503 SERVER_OVERLOADED` con `Retry-After` |
| Un motor no acepta tareas temporalmente | `503 ENGINE_UNAVAILABLE` con `Retry-After` |

Los `429` del edge llegan antes de la API y no llevan el sobre de error JSON ni `Retry-After`. Si recibes uno, espera con retardo exponencial. Un `429` o `503` de los endpoints de envío de tareas lleva un encabezado `Retry-After` en segundos. Los códigos y las recomendaciones de reintento están en [Errores](/es/concepts/errors.md).

## Dosifica los envíos grandes

**1. Usa lotes en vez de bucles**

Un `POST /v1/async/task/batch` con 500 elementos es una sola solicitud frente al límite del edge. Para más tareas que tu límite de concurrencia, usa `POST /v1/batches`: el servidor libera los elementos a medida que hay hueco. Consulta [Lotes y cuadrículas](/es/concepts/bulk-submission.md).

**2. Respeta Retry-After**

Espera los segundos indicados en `Retry-After` antes de reenviar una tarea rechazada. Reutiliza el mismo `idempotencyKey` para que un reintento nunca cree un duplicado.

**3. Ordena el trabajo dependiente**

El orden de ejecución no está garantizado. Espera a que una tarea se complete antes de enviar trabajo que dependa de su resultado.

**4. Vigila tus recuentos**

[`GET /v1/async/status`](/es/api-reference/queue-status) devuelve tus tareas en cola y en ejecución junto al límite de tu plan, para que puedas mantenerlas por debajo. [`GET /stats`](/es/api-reference/stats) añade las tareas que terminaron en las últimas 24 horas.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.