Integraciones
API
Autentícate, inicia una ejecución y lee los resultados con la API HTTP.
La API HTTP de Skynet permite que scripts y herramientas hagan lo mismo que la aplicación web: iniciar ejecuciones, seguirlas y leer los resultados. Esta página muestra cómo firmar las solicitudes, dónde está la referencia completa y un ejemplo completo.
URL base
Envía todas las solicitudes a:
https://api.skynetml.comAutenticación
La API usa tokens de API.
- Abre Ajustes en Skynet y luego la pestaña API.
- Haz clic en Generar token.
- Copia el token en ese momento. Skynet muestra el token completo una sola vez.
Envía el token en la cabecera Authorization de cada solicitud:
Authorization: Bearer skyd_...- Los tokens empiezan por
skyd_. - Cada usuario tiene como máximo un token válido. Un token nuevo invalida el anterior.
- Haz clic en Revocar token para invalidar un token.
Referencia interactiva
La referencia completa está en api.skynetml.com/scalar. Enumera cada endpoint público, sus campos y sus respuestas. Desde esa página puedes enviar solicitudes de prueba.
La referencia lee el documento OpenAPI en https://api.skynetml.com/openapi.public.json. Usa ese archivo para generar un cliente en tu lenguaje.
Endpoints principales
| Método y ruta | Qué hace |
|---|---|
GET /models | Enumera los modelos que puedes usar. |
GET /optimizers | Enumera los optimizadores que encajan con una configuración. |
GET /blackbox/engines | Enumera los motores nativos e indica si cada uno está disponible. |
POST /optimize | Inicia una ejecución para un prompt, código, texto o programa DSPy. |
POST /blackbox/run | Inicia una ejecución sobre un repositorio de GitHub. |
GET /optimizations | Enumera tus ejecuciones. |
GET /optimizations/{optimization_id} | Devuelve una ejecución: estado, progreso, registros y resultado. |
GET /optimizations/{optimization_id}/artifact | Devuelve la mejor versión que encontró la ejecución. |
POST /optimizations/{optimization_id}/cancel | Detiene una ejecución. |
POST /serve/{optimization_id} | Ejecuta la mejor versión con una entrada nueva. |
GET /health | Indica si el servicio está activo. |
Iniciar una ejecución
POST /optimize recibe la misma configuración que el asistente de envío. Este ejemplo mejora un prompt que clasifica mensajes de soporte en etiquetas.
curl https://api.skynetml.com/optimize \
-H "Authorization: Bearer $SKYNET_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: support-labels-001" \
-d @run.json{
"name": "Support labels",
"task": {
"objective": "Sort each support message into billing, bug or other.",
"artifact": {
"kind": "prompt",
"starting_version": "Label this support message as billing, bug or other."
}
},
"data": {
"mode": "pairs",
"cases": [
{ "input": { "message": "I was charged twice." }, "expected": { "label": "billing" } },
{ "input": { "message": "The export button does nothing." }, "expected": { "label": "bug" } },
{
"input": { "message": "Do you have a Hebrew interface?" },
"expected": { "label": "other" }
}
]
},
"optimizer": { "choice": "auto", "budget": { "max_scorer_runs": 200 } },
"models": {
"task_model": { "name": "<model from GET /models>" },
"reflection_model": { "name": "<model from GET /models>" }
},
"workspace": {
"run_code": "from skynet import llm\n\ndef run(artifact, input):\n return llm(artifact, input=input[\"message\"])\n",
"metric_code": "def score(input, output, expected=None):\n ok = str(output).strip().lower() == expected[\"label\"]\n return (1.0 if ok else 0.0), {\"feedback\": \"Correct.\" if ok else \"Wrong label.\"}\n"
},
"max_cost_cents": 500
}Campos importantes:
task.artifact.kindesprompt,code,textodspy_program.data.modeespairs(entradas con salidas esperadas) osingle(exactamente un caso).optimizer.choiceesautoo el nombre de un optimizador deGET /optimizers.max_cost_centses el límite de gasto de esta ejecución, en centavos de dólar estadounidense.is_privateesfalsepor defecto. Ponlo entruepara que la ejecución sea privada.
Lee Métricas y evaluadores para conocer las reglas de run_code y metric_code.
Respuestas
| Estado | Significado |
|---|---|
201 | Skynet puso la ejecución en cola. El cuerpo contiene optimization_id y status. |
202 | La comprobación de la configuración sigue en curso. Espera los segundos que indica la cabecera Retry-After. Después envía el mismo cuerpo con la misma Idempotency-Key. |
402 | Tu saldo es demasiado bajo. |
409 | Alcanzaste una cuota, o la comprobación de la configuración está desactualizada. |
422 | La solicitud o el código del espacio de trabajo no encaja con el optimizador. |
Seguir una ejecución
Consulta la ejecución periódicamente hasta que su estado sea final:
curl https://api.skynetml.com/optimizations/$RUN_ID \
-H "Authorization: Bearer $SKYNET_TOKEN"El campo status toma uno de estos valores:
| Estado | Final |
|---|---|
pending, validating, running | No |
paused | No |
success | Sí |
failed, cancelled, stopped | Sí |
Consulta cada 10 a 30 segundos. Una ejecución puede tardar desde minutos hasta horas.
La referencia de la API enumera todos los campos de la respuesta de una ejecución.
Usar el resultado
Cuando el estado es success, obtén la mejor versión:
curl https://api.skynetml.com/optimizations/$RUN_ID/artifact \
-H "Authorization: Bearer $SKYNET_TOKEN"Para ejecutar la mejor versión con una entrada nueva, envía POST /serve/{optimization_id}. Lee Resultados para saber qué significa cada puntuación.
Límites
La API usa las mismas cuotas, límites de frecuencia y facturación que la aplicación web. Lee Límites y Facturación.