{"name":"AI SDK API","version":"2.1.0","authentication":{"description":"Depende del provider seleccionado","openrouter":{"headers":{"x-openrouter-api-key":"Tu API key de OpenRouter","Authorization":"Alternativa: Bearer <tu-api-key>"}},"bedrock":{"headers":{"x-aws-region":"Región AWS (recomendado para sobreescribir por request)","x-aws-access-key-id":"Access key AWS (opcional)","x-aws-secret-access-key":"Secret key AWS (opcional)","x-aws-session-token":"Session token AWS (opcional)","x-aws-bearer-token-bedrock":"Bearer token Bedrock (opcional)","x-bedrock-api-key":"Alias de x-aws-bearer-token-bedrock (opcional)","Authorization":"Alternativa para bearer: Bearer <token>"},"environment":{"AWS_REGION":"Región AWS (requerido)","AWS_ACCESS_KEY_ID":"Opcional si usas provider chain","AWS_SECRET_ACCESS_KEY":"Opcional si usas provider chain","AWS_SESSION_TOKEN":"Opcional","AWS_BEARER_TOKEN_BEDROCK":"Opcional (Bearer auth alternativa)"}}},"endpoints":{"POST /generate":{"description":"Genera texto usando AI SDK con OpenRouter o Bedrock","headers":{"x-openrouter-api-key":"string (requerido solo para provider=openrouter)","x-aws-region":"string (requerido para bedrock si no hay AWS_REGION)","x-aws-access-key-id":"string (opcional, bedrock)","x-aws-secret-access-key":"string (opcional, bedrock)","x-aws-session-token":"string (opcional, bedrock)","x-aws-bearer-token-bedrock":"string (opcional, bedrock)"},"body":{"provider":"string (opcional) - 'openrouter' (default) | 'bedrock'","model":"string | string[] (requerido) - Modelo principal. Array = fallbacks OpenRouter. Con fusion, actua como juez salvo fusion.judge_model","prompt":"string (opcional) - Prompt simple","system":"string (opcional) - Mensaje de sistema","messages":"array (opcional) - Historial de mensajes","config":{"temperature":"number (0-2)","maxTokens":"number","topP":"number (0-1)","frequencyPenalty":"number","presencePenalty":"number","stopSequences":"string[]"},"tools":"array (opcional) - Tools disponibles [{name, description, parameters}]","toolsWebhook":"string (requerido si tools) - URL del webhook para ejecutar tools","toolContext":"object (opcional) - Contexto extra que recibirá el webhook de tools","maxToolSteps":"number (default: 5) - Máximo de iteraciones de tools","providerOptions":"object (opcional) - Opciones del proveedor, ej: { openrouter: { parallel_tool_calls: false } }","output":{"type":"string - text | object | array | choice | json","name":"string (opcional)","description":"string (opcional)","schema":"object (requerido para object/array) - JSON Schema","options":"string[] (requerido para choice, mínimo 2)"},"fusion":{"analysis_models":"string[] (opcional, 1-8) - Panel que debate en paralelo. Omítelo para usar el preset Quality de OpenRouter","judge_model":"string (opcional, avanzado) - Juez distinto al model principal. Casi nunca hace falta","max_tool_calls":"number (opcional, 1-16) - Pasos de tool-calling internos","max_completion_tokens":"number (opcional) - Tokens máximos por llamada interna","tool_choice":"string (opcional) - 'required' fuerza la invocación de fusion en cada request"}}},"GET /health":{"description":"Verifica el estado de la API"}},"examples":{"simple":{"provider":"openrouter","model":"openai/gpt-4o-mini","prompt":"Explica qué es TypeScript en una oración"},"withModelFallbacks":{"provider":"openrouter","model":["anthropic/claude-sonnet-4","openai/gpt-4o","google/gemini-2.5-pro-preview"],"prompt":"Explica qué es TypeScript en una oración"},"withFusion":{"provider":"openrouter","model":"anthropic/claude-sonnet-4","fusion":{"analysis_models":["anthropic/claude-opus-4","openai/gpt-4o","google/gemini-2.5-pro-preview"]},"prompt":"Compara los argumentos a favor y en contra de un impuesto al carbono. ¿Dónde discrepan los expertos?"},"withFusionAlias":{"provider":"openrouter","model":"openrouter/fusion","prompt":"Compara los argumentos a favor y en contra de un impuesto al carbono. ¿Dónde discrepan los expertos?"},"withBedrock":{"provider":"bedrock","model":"us.anthropic.claude-3-5-sonnet-20241022-v2:0","prompt":"Explica qué es TypeScript en una oración"},"withTools":{"provider":"openrouter","model":"openai/gpt-4o","system":"Eres un asistente que puede consultar el clima y buscar información.","messages":[{"role":"user","content":"¿Qué clima hace en Madrid?"}],"tools":[{"name":"get_weather","description":"Obtiene el clima actual de una ciudad","parameters":{"type":"object","properties":{"city":{"type":"string","description":"Nombre de la ciudad"},"unit":{"type":"string","enum":["celsius","fahrenheit"],"description":"Unidad de temperatura"}},"required":["city"]}}],"toolsWebhook":"https://tu-servidor.com/webhook/tools","maxToolSteps":3},"multipleTools":{"provider":"openrouter","model":"anthropic/claude-3.5-sonnet","messages":[{"role":"user","content":"Busca hoteles en París y dime el clima"}],"tools":[{"name":"search_hotels","description":"Busca hoteles en una ciudad","parameters":{"type":"object","properties":{"city":{"type":"string"},"checkIn":{"type":"string","description":"Fecha YYYY-MM-DD"},"checkOut":{"type":"string","description":"Fecha YYYY-MM-DD"}},"required":["city"]}},{"name":"get_weather","description":"Obtiene el clima","parameters":{"type":"object","properties":{"city":{"type":"string"}},"required":["city"]}}],"toolsWebhook":"https://tu-servidor.com/webhook/tools"}},"webhookFormat":{"request":{"description":"Lo que tu webhook recibirá","body":{"tool":"string - Nombre de la tool a ejecutar","arguments":"object - Argumentos de la tool","context":"object - Contexto extra enviado en toolContext","timestamp":"string - ISO timestamp"}},"response":{"description":"Lo que tu webhook debe retornar","body":"any - El resultado será pasado al modelo. Opcionalmente puede incluir _metadata (objeto) que no verá el agente pero se devolverá en tools_metadata del endpoint /generate"},"metadata":{"description":"Campo opcional _metadata en la respuesta del webhook","behavior":"Se elimina antes de enviar el resultado al modelo. Si está presente, aparece en tools_metadata de la respuesta de /generate","format":{"tool_name":"string - Nombre de la tool ejecutada","tool_id":"string - ID de la llamada a la tool (toolCallId)","metadata":"object - Valor del campo _metadata devuelto por el webhook"}},"example":{"request":{"tool":"get_weather","arguments":{"city":"Madrid","unit":"celsius"},"context":{"userId":"user_123","sessionId":"sess_abc"},"timestamp":"2024-01-15T10:30:00.000Z"},"response":{"temperature":15,"condition":"soleado","humidity":45,"_metadata":{"source":"openweather","requestId":"req_abc123"}}}}}