QwQ AI / API v1

Documentación API

Integra respuestas web, investigación avanzada y financiera de QwQ AI. Usa tu saldo a los mismos precios que la web.

Inicio rápido

Inicia sesión, crea una clave API desde tu perfil y recarga saldo. Envía Authorization: Bearer QWQ_API_KEY. Guarda la clave en una variable de entorno del servidor.

export QWQ_API_KEY='qwq_your_key_here'

curl https://qwq32.com/api/v1/answer \
  -H "Authorization: Bearer $QWQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "What causes the aurora borealis?"
}'

URL base: https://qwq32.com/api/v1

API disponibles

EndpointUso
POST /api/v1/answerRespuestas web rápidas con citas y resultados de búsqueda.
POST /api/v1/researchCinco niveles de investigación, control de fuentes y JSON estructurado.
POST /api/v1/finance_researchInvestigación financiera en niveles Deep y Exhaustive.
GET /api/v1/research/{task_id}Recupera tus propias tareas en segundo plano. Consultarlas es gratis.

Parámetros y ejemplos

Answer

query es obligatorio, no puede estar vacío y admite hasta 400 caracteres. Opcionales: freshness (day/week/month/year o YYYY-MM-DDtoYYYY-MM-DD), country, language, safesearch e include_domains / exclude_domains / boost_domains. Cada lista admite 500 dominios. include_domains no se combina con las otras dos. Usa códigos country y language compatibles con You.com.

curl https://qwq32.com/api/v1/answer \
  -H "Authorization: Bearer $QWQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "query": "Recent advances in renewable energy",
  "freshness": "month",
  "language": "EN",
  "safesearch": "moderate",
  "include_domains": [
    "energy.gov"
  ]
}'

Research

input es obligatorio, no vacío, máximo 40.000 caracteres. research_effort: lite, standard (predeterminado), deep, exhaustive, frontier. source_control admite listas de dominios, freshness y country con las mismas restricciones que Answer. background es opcional. Indica el idioma de respuesta en input.

curl https://qwq32.com/api/v1/research \
  -H "Authorization: Bearer $QWQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": "Compare three battery technologies. Respond in Chinese.",
  "research_effort": "deep",
  "background": true,
  "source_control": {
    "freshness": "year",
    "exclude_domains": [
      "example.com"
    ]
  }
}'

output_schema opcional usa el subconjunto JSON Schema de You.com y devuelve un objeto en output.content; lite no lo admite. La raíz debe ser object, cada objeto requiere additionalProperties:false y todas las propiedades van en required. El proveedor valida estructura, profundidad y límites de propiedades; los fallos se reembolsan.

Finance Research

input es obligatorio, no vacío, máximo 40.000 caracteres. research_effort solo admite deep (predeterminado) y exhaustive. Finance es síncrono y puede tardar unos seis minutos.

curl https://qwq32.com/api/v1/finance_research \
  -H "Authorization: Bearer $QWQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": "Analyze the latest NVIDIA earnings and cite sources.",
  "research_effort": "deep"
}'

Se rechazan campos desconocidos. El cuerpo admite hasta 180.000 bytes. No puedes indicar el usuario, precio ni clave API del proveedor.

Respuestas síncronas

HTTP 200 conserva answer, citations y results de Answer y añade billing con coste, ID de solicitud y saldo tras el cobro. Los importes son USD; una unidad de saldo equivale a $0.0000001.

{
  "answer": "A cited answer [[1]]",
  "citations": [
    {
      "source": "https://example.com",
      "excerpts": [
        "Supporting evidence"
      ]
    }
  ],
  "results": {
    "web": []
  },
  "billing": {
    "request_id": "uuid",
    "cost_usd": 0.02,
    "cost_units": 200000,
    "balance_usd": 9.98
  }
}

Research y Finance devuelven output.content, output.content_type, output.sources y billing. La cita [[1]] corresponde a la primera fuente. Research estructurado devuelve un objeto JSON en output.content.

Investigación en segundo plano

Research deep, exhaustive y frontier usan automáticamente el modo en segundo plano y devuelven HTTP 202. Actívalo en lite / standard con background:true. Guarda el task_id de QwQ y recupera el resultado en 24 horas. Solo se cobra el envío; las consultas son gratis.

{
  "task_id": "qwq-task-uuid",
  "status": "queued",
  "expires_at": "2026-10-04T00:00:00.000Z",
  "billing": {
    "request_id": "qwq-task-uuid",
    "cost_usd": 0.3,
    "cost_units": 3000000,
    "balance_usd": 9.7
  }
}
curl https://qwq32.com/api/v1/research/QWQ_TASK_ID \
  -H "Authorization: Bearer $QWQ_API_KEY"

Consulta cada 5–15 segundos. Estados: submitting, queued, running, completed, failed. Lee result.output al completar; failed incluye QUERY_FAILED_REFUNDED. Cualquier clave activa de la cuenta propietaria puede recuperar la tarea. Los errores temporales permiten reintento y no reembolsan tareas en ejecución.

{
  "task_id": "qwq-task-uuid",
  "status": "completed",
  "expires_at": "2026-10-04T00:00:00.000Z",
  "result": {
    "output": {
      "content": "A researched report [[1]]",
      "content_type": "text",
      "sources": [
        {
          "url": "https://example.com",
          "title": "Source"
        }
      ]
    }
  }
}

Ejemplos de integración en servidor

JavaScript / Node.js

const response = await fetch("https://qwq32.com/api/v1/answer", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.QWQ_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ query: "What causes the aurora borealis?" }),
});
const data = await response.json();
if (!response.ok) throw new Error(data.code);
console.log(data.answer, data.billing.cost_usd);

Python / requests

import os
import requests

response = requests.post(
    "https://qwq32.com/api/v1/finance_research",
    headers={"Authorization": f"Bearer {os.environ['QWQ_API_KEY']}"},
    json={"input": "Analyze NVIDIA earnings", "research_effort": "deep"},
    timeout=370,
)
response.raise_for_status()
print(response.json()["output"]["content"])

Precio por llamada

Los precios usan la misma configuración y saldo que la web. Se cobra antes de ejecutar y los fallos se reembolsan una sola vez. También se reembolsan tareas sin terminar que caducan. Recarga mínima: $10. Sin suscripciones.

Herramienta / nivelPor llamada (USD)
answer$0.02
research / lite$0.04
research / standard$0.15
research / deep$0.30
research / exhaustive$1.35
research / frontier$3.60
finance / deep$0.35
finance / exhaustive$1.50
Recargar saldo →

Gestión de errores

Los errores devuelven JSON con un campo code que describe el fallo.

400 / 413
INVALID_REQUEST / QUERY_TOO_LONG: Parámetros inválidos o cuerpo demasiado grande. Sin cobro.
401
INVALID_API_KEY: Clave ausente, incorrecta o revocada.
402
INSUFFICIENT_BALANCE: Saldo insuficiente; no se llama al proveedor.
404 / 410
JOB_NOT_FOUND / JOB_EXPIRED: Tarea desconocida, de otra cuenta o caducada.
502 / 503
QUERY_FAILED_REFUNDED: Solicitud fallida y reembolsada. JOB_POLL_FAILED: Consulta temporalmente fallida; reintenta. SERVICE_UNAVAILABLE / BILLING_UNAVAILABLE: Servicio no disponible; el cobro puede requerir conciliación, revisa antes el historial.

Cada POST nuevo es una consulta de pago nueva; no se admite repetición idempotente. Revisa el historial tras un timeout o error de cobro. Si conoces el ID de tarea, reintenta solo GET.

Privacidad y registros

Solo se almacena el hash SHA-256 de cada clave; se muestra una vez y puede revocarse. El historial muestra las últimas 100 llamadas cobradas con herramienta, nivel, coste, estado y nombre de clave. No guardamos preguntas, respuestas ni informes. El proveedor conserva temporalmente los resultados en segundo plano; recupéralos pronto y guárdalos en tu sistema.