Inicio rápido
Esta sección muestra el flujo básico para utilizar la API: desde la subida de un fichero hasta la obtención de los resultados del procesamiento.
El flujo general consta de cuatro pasos:
- Subir o enviar el fichero a procesar
- Obtener el identificador de la tarea
- Consultar el estado del procesamiento
- Recuperar los resultados
Subida de fichero
En primer lugar es necesario subir a la plataforma el fichero que se quiere analizar.
Para ello se debe realizar una petición autenticada a la API incluyendo la API Key en la cabecera.
Ejemplo de petición:
curl -X POST 'https://fair-dev.gradiant.org/api/v1/files' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {API_KEY}' \
-H 'Content-Type: multipart/form-data' \
-F 'files=...'
Esta petición devolverá un identificador único para el fichero. Este se utiliza para iniciar cualquier otra operación sobre el fichero.
{
"file_ids": [
"ac38014e-7b31-470d-b013-dc5318055adc"
]
}
Enviar un fichero para procesar
Para analizar el documento, indicamos el ID del fichero en el endpoint correspondiente:
Ejemplo con curl:
curl -X 'POST' \
'https://fair-dev.gradiant.org/api/v1/runs' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {API_KEY} \
-H 'Content-Type: application/json' \
-d '{
"run_type": "detection",
"file_ids": [
"ac38014e-7b31-470d-b013-dc5318055adc"
],
"strength": 0,
"algorithm": "string",
"lang": "string",
"context": "string",
"threshold": 0,
"top_n": 0,
"exact_duplicated": true
}'
Si la petición es correcta, la API responderá con un JSON similar a:
{
"success_queued_files": [
"ac38014e-7b31-470d-b013-dc5318055adc"
],
"error_queued_files": [],
"run_ids": [
"40fa5bb8-37b7-45d1-9647-14233e490c5f"
],
"details": [
"file SDXL_1261.webp ok"
]
}
El campo run_ids contiene los identificadores únicos de las tareas y serán necesarios para consultar su estado y resultados.
Consultar el estado de la tarea
El procesamiento puede no ser inmediato, especialmente en el caso de vídeos o audios largos. Para comprobar el estado se utiliza el siguiente endpoint, incluyendo el run_id correspondiente:
curl -X 'GET' \
'https://fair-dev.gradiant.org/api/v1/runs/40fa5bb8-37b7-45d1-9647-14233e490c5f/status' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {API_KEY}"
Respuesta de ejemplo mientras se está procesando:
{
"status": "processing"
}
Cuando el estado cambie a:
{
"status": "ok",
"result_ids": [
"2df5032e-9506-47ea-a0fe-dbd642faa5ee"
]
}
significa que los resultados ya están disponibles.
Obtener los resultados
Una vez completada la tarea, los resultados pueden consultarse pidiendo la información disponible sobre el fichero con el correspondiente file_id:
curl -X 'GET' \
'https://fair-dev.gradiant.org/api/v1/files/ac38014e-7b31-470d-b013-dc5318055adc' \
-H 'accept: application/json' \
-H 'Authorization: Bearer {API_KEY}"
Respuesta de ejemplo:
{
"id": "ac38014e-7b31-470d-b013-dc5318055adc",
"type": "image/webp",
"format": "image",
"filename": "SDXL_1261.webp",
"state": "ready",
"detection_state": {
"state": "alert",
"detail": null,
"remaining_time": null
},
"tracing_state": {
"state": null,
"detail": null,
"remaining_time": null
},
"protection_state": {
"state": null,
"detail": null,
"remaining_time": null
},
"created": "2026-03-05T15:32:13",
"duration": null,
"file_url": "ac38014e-7b31-470d-b013-dc5318055adc.webp",
"detection_results": {
"run_id": "40fa5bb8-37b7-45d1-9647-14233e490c5f",
"result": "alert",
"start_date": "2026-03-11T07:58:59",
"end_date": "2026-03-11T07:59:31",
"extra_details": null,
"details": [
{
"result_id": "c0065e39-5c63-4c65-a764-ddc24a77e1eb",
"file_url": "ac38014e-7b31-470d-b013-dc5318055adc.webp",
"name": "Synthetic",
"result": "alert",
"detail": "Synthetic: synthetic detection",
"score": 0.7395417094230652,
"decision": "Stable Diffusion XL",
"color": "#FF0000",
"info": "Detect synthetic images",
"extra_details": null
}
]
},
"tracing_results": null,
"protection_results": null
}
El contenido exacto dependerá del tipo de fichero procesado y del modelo aplicado.
Resumen del flujo completo
- Se envía un fichero mediante una petición autenticada.
- La API devuelve un file_id.
- Se inicia una operción de análisis sobre ese fichero, indicando su file_id.
- La API devuelve un run_id.
- Se consulta periódicamente el estado mediante ese run_id.
- Cuando el estado es
OKoAlert, se recuperan los resultados.
Este modelo asíncrono permite procesar ficheros de distinto tamaño sin bloquear la API y garantiza escalabilidad incluso bajo carga elevada.