Referencia de API
Crear ejecución de herramienta
/v1/tool-runsAdmite flat constante por llamada, input precalculado por entradas y usage según uso final. pricing.quote_required determina si se exige cotización; requires_usage, si se exige límite de coste y uso final confirmado. Ninguno se deduce de schema_version. Con metered_pricing apagado solo se restringen llamadas nuevas que requieren uso final; reglas constantes/por entrada sin ese requisito siguen disponibles. La clave actual necesita autorización de herramientas; identidad y resultados quedan limitados a la clave original. Con el interruptor general apagado el catálogo está vacío; el catálogo anónimo no autoriza la ejecución. Las llamadas nuevas requieren version/input no vacíos e Idempotency-Key. Si se pierde la respuesta sin run_id, repite con clave de API, Idempotency-Key y cuerpo completo originales para recuperar la ejecución, sin recotizar ni cambiar el límite de coste. Repetir una ejecución aceptada no depende de interruptores actuales ni vigencia de cotización. Con run_id, consulta solo la original; no crees con otra clave ante envío desconocido.
Ejecutar después de cotizar
Obtén version, input_schema y pricing exactos de los detalles de la herramienta. mode=flat es un precio constante por llamada; mode=input se precalcula según entradas; mode=usage usa el consumo final. schema_version solo describe el formato de almacenamiento.
Las nuevas llamadas con quote_required=true deben cotizar primero. Comprueba tool_id/version devueltos y guarda quote_id y la solicitud original. Con requires_usage=true, max_cost_usd debe ser como mínimo maximum_usd. Para las demás ejecuciones, el límite es opcional pero también se comprueba si se aporta. Las de precio constante sin uso final pueden ejecutarse directamente; las reglas por entrada requieren cotización pero pueden liquidarse sin uso final.
La cotización fija el origen original. Aunque cambie el predeterminado, sigue usando el original mientras este y su configuración sean válidos. Ante quote_expired, quote_stale o invalid_quote, una llamada nueva aún no enviada puede recotizar tras verificar sus entradas. Si la ejecución tiene éxito pero billing sigue reserved, continúa consultando el uso final; el éxito de la salida no demuestra liquidación.
Recuperar una respuesta perdida
Antes de enviar, conserva la identidad de la clave de API, Idempotency-Key y cuerpo completo originales. Si se pierde la respuesta y no hay run_id, repite POST /v1/tool-runs con la misma clave de API, clave de solicitud y cuerpo completo original. Conserva quote_id y max_cost_usd; no recotices ni cambies claves. Una ejecución existente devuelve primero su registro original sin llamar de nuevo al servicio; se recupera aunque caduque la cotización o se desactiven nuevas llamadas. Una vez obtenido run_id, usa solo GET sobre la ejecución original.
Los conflictos de idempotencia exigen verificar la solicitud original; no cambies automáticamente la clave para crear otra operación facturable. Consulta Gestión de errores, Facturación y Recuperación asíncrona.
Autenticación y permisos
Usa tu clave actual de GloopAPI. Los modelos, capacidades y permisos dependen de su catálogo y de la documentación del endpoint.
Authorization: Bearer $GLOOP_API_KEYEsquemas de autenticación: BearerAuth
Solicitud
Encabezados de solicitud
Idempotency-KeystringObligatorioConserva la intención original con la misma clave; tras una interrupción, consulta recuperación primero. No reenvíes a ciegas estados desconocidos.
- Longitud mínima
1- Longitud máxima
191
Cuerpo de solicitud · application/json
- Tipo
- object
- Campos obligatorios
tool_idversioninput- Propiedades adicionales
- false
Cuerpo de solicitud obligatorio
quote_idstringOpcionalLas nuevas ejecuciones con pricing.quote_required=true requieren cotización válida; puede omitirse con venta constante sin uso final. Siempre se verifica la vinculación de una cotización aportada.
tool_idstringObligatorioID de herramienta del catálogo ejecutable de la clave actual.
versionstringObligatorioVersión de contrato/capacidad o herramienta; la ejecución usa la versión del catálogo.
- Longitud mínima
1- Patrón
".*\\S.*"
inputunknownObligatorioDebe cumplir input_schema de esa version; solo JSON normalizado, sin campos adicionales como route_id de administrador.
Las nuevas ejecuciones con pricing.requires_usage=true exigen un presupuesto decimal válido en USD, no null, igual o superior al maximum_usd cotizado. Es opcional en las demás, pero también se comprueba si se aporta. Solo se verifica al crear la ejecución.
Respuestas y errores
HTTP 200
Devuelve 200 con succeeded o failed, tanto en respuesta síncrona inicial como recuperación idempotente. succeeded puede tener billing.status=reserved esperando uso final; HTTP 200 no implica liquidación.
application/json
- Tipo
- object
- Campos obligatorios
idtool_idversionstatusoutputbillingresult_expiredcreated_atupdated_at
idstringObligatorioIdentificador público del objeto, usado en su ruta de detalles.
tool_idstringObligatorioID de herramienta del catálogo ejecutable de la clave actual.
versionstringObligatorioVersión de contrato/capacidad o herramienta; la ejecución usa la versión del catálogo.
statusstringObligatoriosubmitting/running/submission_unknown/succeeded/failed; submission_unknown indica resultado de envío desconocido. No reenvíes con otro Idempotency-Key.
outputunknownObligatorioJSON definido por output_schema de la herramienta; no supongas que sigue existiendo tras caducar.
error_codestringOpcionalCódigo público de error para decisiones de flujo.
billingobjectObligatorioEstado de facturación independiente, no sustituible por estado de generación.
Campos secundarios de billing (7)
review_requiredbooleanOpcionalLas pruebas de facturación requieren revisión manual.
reasonstringOpcionalMotivo público de acción no disponible o revisión de facturación.
usageunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
breakdownunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
statusstringObligatorioEstado actual del objeto; evalúalo aparte de facturación y guardado.
reserved_usdstringObligatorioReserva máxima en USD como cadena.
charged_usdstringObligatorioImporte en USD confirmado actualmente, como cadena.
Rama allOf 1
Tipo: object
Obligatorio en esta rama: status, reserved_usd, charged_usd
review_requiredbooleanOpcionalLas pruebas de facturación requieren revisión manual.
reasonstringOpcionalMotivo público de acción no disponible o revisión de facturación.
usageunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
breakdownunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
statusstringObligatorioEstado actual del objeto; evalúalo aparte de facturación y guardado.
reserved_usdstringObligatorioReserva máxima en USD como cadena.
charged_usdstringObligatorioImporte en USD confirmado actualmente, como cadena.
result_expiredbooleanObligatorioSi el resultado caducó; facturación e idempotencia se conservan.
created_atintegerObligatorioFecha de creación en segundos Unix.
updated_atintegerObligatorioÚltima actualización en segundos Unix.
HTTP 202
Estado submitting, running o submission_unknown; solicitud aceptada, pero billing debe evaluarse por separado.
application/json
- Tipo
- object
- Campos obligatorios
idtool_idversionstatusoutputbillingresult_expiredcreated_atupdated_at
idstringObligatorioIdentificador público del objeto, usado en su ruta de detalles.
tool_idstringObligatorioID de herramienta del catálogo ejecutable de la clave actual.
versionstringObligatorioVersión de contrato/capacidad o herramienta; la ejecución usa la versión del catálogo.
statusstringObligatoriosubmitting/running/submission_unknown/succeeded/failed; submission_unknown indica resultado de envío desconocido. No reenvíes con otro Idempotency-Key.
outputunknownObligatorioJSON definido por output_schema de la herramienta; no supongas que sigue existiendo tras caducar.
error_codestringOpcionalCódigo público de error para decisiones de flujo.
billingobjectObligatorioEstado de facturación independiente, no sustituible por estado de generación.
Campos secundarios de billing (7)
review_requiredbooleanOpcionalLas pruebas de facturación requieren revisión manual.
reasonstringOpcionalMotivo público de acción no disponible o revisión de facturación.
usageunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
breakdownunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
statusstringObligatorioEstado actual del objeto; evalúalo aparte de facturación y guardado.
reserved_usdstringObligatorioReserva máxima en USD como cadena.
charged_usdstringObligatorioImporte en USD confirmado actualmente, como cadena.
Rama allOf 1
Tipo: object
Obligatorio en esta rama: status, reserved_usd, charged_usd
review_requiredbooleanOpcionalLas pruebas de facturación requieren revisión manual.
reasonstringOpcionalMotivo público de acción no disponible o revisión de facturación.
usageunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
breakdownunknownOpcionalValor JSON definido por esquema o protocolo de la herramienta; sin campos fijos supuestos.
statusstringObligatorioEstado actual del objeto; evalúalo aparte de facturación y guardado.
reserved_usdstringObligatorioReserva máxima en USD como cadena.
charged_usdstringObligatorioImporte en USD confirmado actualmente, como cadena.
result_expiredbooleanObligatorioSi el resultado caducó; facturación e idempotencia se conservan.
created_atintegerObligatorioFecha de creación en segundos Unix.
updated_atintegerObligatorioÚltima actualización en segundos Unix.
HTTP 400
Campos o parámetros de solicitud inválidos.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
HTTP 401
La clave falta, no es válida, caducó o fue revocada.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
HTTP 403
Permisos insuficientes de IP, cuenta, modelo o herramienta.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
HTTP 404
Objeto/capacidad no disponible o función desactivada.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
HTTP 409
Conflicto de idempotencia/cotización, objeto no preparado o aún referenciado.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
HTTP 429
Límite de solicitudes/cola.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
HTTP 500
Fallo interno de autenticación o almacenamiento de datos.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
HTTP 503
Servicio, precios o almacenamiento no disponibles.
application/json
- Tipo
- object
- Campos obligatorios
error
errorobjectObligatorioCampos secundarios de error (4)
codestringOpcionalmessagestringOpcionaltypestringOpcionalrequest_idstringOpcional
Notas del endpoint
Ejemplo para herramientas con requires_usage=true: sustituye quote_id y max_cost_usd. El presupuesto debe ser una cadena decimal USD válida no inferior a maximum_usd de la cotización; 0.01 es ilustrativo. En reglas por entrada que requieren cotización pero no uso final, el presupuesto es opcional; en precio constante sin uso final, ambos son opcionales. Guarda identidad de clave, clave de solicitud y cuerpo completo originales antes de enviar; reutilízalos si se pierde la respuesta.