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
| Endpoint | Uso |
|---|---|
| POST /api/v1/answer | Respuestas web rápidas con citas y resultados de búsqueda. |
| POST /api/v1/research | Cinco niveles de investigación, control de fuentes y JSON estructurado. |
| POST /api/v1/finance_research | Investigació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 / nivel | Por 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 |
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.