Instancias de Workflow
Iniciá, cancelá y monitoreá ejecuciones de workflow. Recuperá los detalles de una instancia con sus tareas, líneas de tiempo de eventos y datos de formulario capturados en todos los pasos completados.
Todos los endpoints de esta página requieren un token JWT válido, una clave de API y el encabezado tenant. Consultá Autenticación para más detalles.
Listar instancias
Recuperá una lista paginada de instancias de workflow.
/apidev/v1/workflow/instancesEncabezados de la solicitud
Every request to a protected endpoint requires these headers:
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token obtained from the Login endpoint. Format: Bearer <token> |
X-API-Key | Yes | Company integration key provided during onboarding. Format: gtk_xxx... |
tenant | Yes | Your assigned tenant domain (default: geotareas.com) — always send your assigned tenant |
Content-Type | Conditional | application/json — required for POST and PUT requests |
Parámetros de consulta
| Parámetro | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
limit | integer | No | 25 | Cantidad de registros por página. Mín: 1, Máx: 100 |
offset | integer | No | 0 | Cantidad de registros a omitir para la paginación |
status | string | No | — | Filtrar por estado: RUNNING, COMPLETED, CANCELLED, ERROR |
definition_id | string | No | — | Filtrar por ID de definición de workflow. Longitud máxima: 30 |
entity_type | string | No | — | Filtrar por tipo de entidad |
entity_id | string | No | — | Filtrar por ID de la entidad asociada. Longitud máxima: 30 |
startdate | string | No | — | Límite inferior de la fecha de inicio (ISO 8601). Longitud máxima: 30 |
enddate | string | No | — | Límite superior de la fecha de inicio (ISO 8601). Longitud máxima: 30 |
Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Identificador único de la instancia (BigInt) |
definition_id | string | ID de la definición de workflow (BigInt) |
definition_name | string | Nombre de la definición de workflow |
status | string | "RUNNING", "COMPLETED", "CANCELLED" o "ERROR" |
entity_type | string | Tipo de entidad con la que está asociada esta instancia |
entity_id | string | null | ID de la entidad asociada (BigInt) |
entity_label | string | null | Etiqueta visible de la entidad asociada |
current_step | string | null | Nombre del paso actual (null si está completada/cancelada) |
started_at | string | Marca de tiempo de inicio (ISO 8601, sin zona horaria) |
ended_at | string | null | Marca de tiempo de fin (ISO 8601, sin zona horaria) |
cancelled_at | string | null | Marca de tiempo de cancelación (ISO 8601, sin zona horaria) |
pending_tasks_count | integer | Cantidad de tareas humanas pendientes |
Ejemplos de código
- cURL
- JavaScript
- Python
curl -s -X GET "https://$TENANT_HOST/apidev/v1/workflow/instances?limit=10&status=RUNNING" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"
const response = await fetch(
`https://${TENANT_HOST}/apidev/v1/workflow/instances?limit=10&status=RUNNING`,
{
headers: {
"Authorization": `Bearer ${TOKEN}`,
"X-API-Key": APIKEY,
"tenant": TENANT,
},
}
);
const { data, meta } = await response.json();
console.log(`Fetched ${data.length} of ${meta.total} instances`);
import requests
response = requests.get(
f"https://{TENANT_HOST}/apidev/v1/workflow/instances",
headers={
"Authorization": f"Bearer {TOKEN}",
"X-API-Key": APIKEY,
"tenant": TENANT,
},
params={"limit": 10, "status": "RUNNING"},
)
result = response.json()
for instance in result["data"]:
print(f"{instance['id']}: {instance['definition_name']} ({instance['status']})")
Ejemplo de respuesta
{
"success": true,
"data": [
{
"id": "591847302948571634",
"definition_id": "482938470192837465",
"definition_name": "New Account Onboarding",
"status": "RUNNING",
"entity_type": "CUENTA",
"entity_id": "738291047382910473",
"entity_label": "Acme Corp",
"current_step": "Send Welcome Email",
"started_at": "2026-03-15T10:00:00",
"ended_at": null,
"cancelled_at": null,
"pending_tasks_count": 1
}
],
"meta": {
"total": 34,
"limit": 10,
"offset": 0
}
}
Encabezados del límite de solicitudes
Every response includes rate limit information in the headers:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum number of requests allowed in the current window |
X-RateLimit-Remaining | Number of requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp (seconds) when the current window resets |
Retry-After | Seconds to wait before retrying (only present on 429 responses) |
X-Request-Id | Unique request identifier for debugging and support tickets |
Detalle de la instancia
Recuperá el perfil completo de una única instancia de workflow, incluyendo sus tareas asociadas.
/apidev/v1/workflow/instances/{id}Parámetros de ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | El identificador único de la instancia de workflow (BigInt) |
Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Identificador único de la instancia (BigInt) |
definition_id | string | ID de la definición de workflow (BigInt) |
definition_name | string | Nombre de la definición de workflow |
status | string | "RUNNING", "COMPLETED", "CANCELLED" o "ERROR" |
entity_type | string | Tipo de entidad |
entity_id | string | null | ID de la entidad asociada (BigInt) |
entity_label | string | null | Etiqueta visible de la entidad asociada |
current_step | object | null | Información del paso actual (ver abajo) |
trigger_type | string | Cómo se inició la instancia: manual, event, schedule |
started_at | string | Marca de tiempo de inicio |
ended_at | string | null | Marca de tiempo de fin |
cancelled_at | string | null | Marca de tiempo de cancelación |
cancelled_by | string | null | Usuario que canceló la instancia |
cancel_reason | string | null | Motivo de la cancelación |
tasks | array | Lista de tareas creadas para esta instancia (ver abajo) |
Objeto current_step:
| Campo | Tipo | Descripción |
|---|---|---|
node_id | string | Identificador del nodo |
name | string | Nombre visible del paso |
Elementos del arreglo tasks:
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Identificador único de la tarea (BigInt) |
step_name | string | Nombre visible del paso |
status | string | "PENDING", "IN_PROGRESS", "COMPLETED" |
assigned_to | string | null | Nombre del usuario o grupo asignado |
result | string | null | Código de resultado de finalización |
completed_at | string | null | Marca de tiempo de finalización |
Ejemplo de respuesta
{
"success": true,
"data": {
"id": "591847302948571634",
"definition_id": "482938470192837465",
"definition_name": "New Account Onboarding",
"status": "RUNNING",
"entity_type": "CUENTA",
"entity_id": "738291047382910473",
"entity_label": "Acme Corp",
"current_step": {
"node_id": "node_d4e5f6",
"name": "Send Welcome Email"
},
"trigger_type": "manual",
"started_at": "2026-03-15T10:00:00",
"ended_at": null,
"cancelled_at": null,
"cancelled_by": null,
"cancel_reason": null,
"tasks": [
{
"id": "674839201748392017",
"step_name": "Verify Contact Information",
"status": "COMPLETED",
"assigned_to": "jdoe",
"result": "approved",
"completed_at": "2026-03-15T11:30:00"
},
{
"id": "674839201748392018",
"step_name": "Send Welcome Email",
"status": "IN_PROGRESS",
"assigned_to": "Sales Team",
"result": null,
"completed_at": null
}
]
},
"meta": {}
}
Línea de tiempo de la instancia
Recuperá el registro cronológico de eventos de una instancia de workflow.
/apidev/v1/workflow/instances/{id}/timelineParámetros de ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | El identificador único de la instancia de workflow (BigInt) |
Respuesta
Devuelve un arreglo de objetos de evento de la línea de tiempo dentro del campo data.
| Campo | Tipo | Descripción |
|---|---|---|
event | string | Tipo de evento: started, step_completed, step_started, reassigned, cancelled, completed, error |
datetime | string | Marca de tiempo del evento (ISO 8601, sin zona horaria) |
actor | string | Usuario o sistema que disparó el evento |
details | object | null | Datos adicionales específicos del evento |
Ejemplo de respuesta
{
"success": true,
"data": [
{
"event": "started",
"datetime": "2026-03-15T10:00:00",
"actor": "jdoe",
"details": null
},
{
"event": "step_started",
"datetime": "2026-03-15T10:00:01",
"actor": "system",
"details": {"step_name": "Verify Contact Information", "assigned_to": "jdoe"}
},
{
"event": "step_completed",
"datetime": "2026-03-15T11:30:00",
"actor": "jdoe",
"details": {"step_name": "Verify Contact Information", "result_code": "approved"}
}
],
"meta": {}
}
Datos capturados de la instancia
Recuperá todos los datos de formulario capturados durante la ejecución de una instancia de workflow en todos los pasos completados.
/apidev/v1/workflow/instances/{id}/captured-dataParámetros de ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | El identificador único de la instancia de workflow (BigInt) |
Respuesta
Devuelve un arreglo de entradas de datos capturados agrupados por paso dentro del campo data.
| Campo | Tipo | Descripción |
|---|---|---|
step_name | string | Nombre visible del paso |
completed_by | string | Usuario que completó el paso |
completed_at | string | Marca de tiempo de finalización (ISO 8601, sin zona horaria) |
result_code | string | Código de resultado de finalización |
result_label | string | Etiqueta legible del resultado |
fields | array | Lista de valores de campos capturados (ver abajo) |
Elementos del arreglo fields:
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Identificador del campo |
type | string | Tipo de campo: text, number, date, boolean, select, file |
value | any | Valor capturado |
Ejemplo de respuesta
{
"success": true,
"data": [
{
"step_name": "Verify Contact Information",
"completed_by": "jdoe",
"completed_at": "2026-03-15T11:30:00",
"result_code": "approved",
"result_label": "Approved",
"fields": [
{
"name": "contact_verified",
"type": "boolean",
"value": true
},
{
"name": "phone_confirmed",
"type": "boolean",
"value": true
},
{
"name": "verification_notes",
"type": "text",
"value": "Confirmed via phone call."
}
]
}
],
"meta": {}
}
Iniciar instancia
Iniciá una nueva instancia de workflow a partir de una definición dada.
/apidev/v1/workflow/instancesIniciar una instancia comparte el mismo cupo de límite de solicitudes que los endpoints de lectura (30 solicitudes por minuto), aunque requiere el permiso de ejecución.
Encabezados de la solicitud
Every request to a protected endpoint requires these headers:
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token obtained from the Login endpoint. Format: Bearer <token> |
X-API-Key | Yes | Company integration key provided during onboarding. Format: gtk_xxx... |
tenant | Yes | Your assigned tenant domain (default: geotareas.com) — always send your assigned tenant |
Content-Type | Conditional | application/json — required for POST and PUT requests |
Cuerpo de la solicitud
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
definition_id | string | Sí | El ID de la definición de workflow a instanciar. Longitud máxima: 30 |
entity_type | string | Sí | Tipo de entidad: TAREA, CUENTA, CLIENTE, PERSONAL, DISPOSITIVO, NINGUNA |
entity_id | string | No | El ID de la entidad a asociar con esta instancia. Longitud máxima: 30 |
entity_id es obligatorio siempre que entity_type sea cualquier valor distinto de NINGUNA. Enviar una instancia con un tipo de entidad pero sin ID de entidad devuelve un 400 VALIDATION_ERROR.
Ejemplos de código
- cURL
- JavaScript
- Python
curl -s -X POST "https://$TENANT_HOST/apidev/v1/workflow/instances" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{
"definition_id": "482938470192837465",
"entity_type": "CUENTA",
"entity_id": "738291047382910473"
}'
const response = await fetch(
`https://${TENANT_HOST}/apidev/v1/workflow/instances`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${TOKEN}`,
"X-API-Key": APIKEY,
"tenant": TENANT,
"Content-Type": "application/json",
},
body: JSON.stringify({
definition_id: "482938470192837465",
entity_type: "CUENTA",
entity_id: "738291047382910473",
}),
}
);
const { data } = await response.json();
console.log(`Instance created: ${data.instance_id}`);
import requests
response = requests.post(
f"https://{TENANT_HOST}/apidev/v1/workflow/instances",
headers={
"Authorization": f"Bearer {TOKEN}",
"X-API-Key": APIKEY,
"tenant": TENANT,
"Content-Type": "application/json",
},
json={
"definition_id": "482938470192837465",
"entity_type": "CUENTA",
"entity_id": "738291047382910473",
},
)
result = response.json()
print(f"Instance created: {result['data']['instance_id']}")
Ejemplo de respuesta (201 Created)
{
"success": true,
"data": {
"instance_id": "591847302948571635",
"status": "RUNNING",
"current_step": "Verify Contact Information"
},
"meta": {}
}
Cancelar instancia
Cancelá una instancia de workflow en ejecución. El estado de la instancia cambia a CANCELLED y todas las tareas pendientes se cierran.
/apidev/v1/workflow/instances/{id}/cancelParámetros de ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | El identificador único de la instancia de workflow (BigInt) |
Cuerpo de la solicitud
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
reason | string | Sí | Motivo para cancelar la instancia de workflow. Longitud máxima: 500 |
Ejemplos de código
- cURL
- JavaScript
- Python
curl -s -X POST "https://$TENANT_HOST/apidev/v1/workflow/instances/591847302948571634/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{"reason": "Account onboarding no longer needed — duplicate."}'
const response = await fetch(
`https://${TENANT_HOST}/apidev/v1/workflow/instances/591847302948571634/cancel`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${TOKEN}`,
"X-API-Key": APIKEY,
"tenant": TENANT,
"Content-Type": "application/json",
},
body: JSON.stringify({
reason: "Account onboarding no longer needed — duplicate.",
}),
}
);
const { data } = await response.json();
console.log(`Instance ${data.instance_id} cancelled`);
import requests
response = requests.post(
f"https://{TENANT_HOST}/apidev/v1/workflow/instances/591847302948571634/cancel",
headers={
"Authorization": f"Bearer {TOKEN}",
"X-API-Key": APIKEY,
"tenant": TENANT,
"Content-Type": "application/json",
},
json={"reason": "Account onboarding no longer needed — duplicate."},
)
result = response.json()
print(f"Instance {result['data']['instance_id']} cancelled")
Ejemplo de respuesta
{
"success": true,
"data": {
"instance_id": "591847302948571634",
"status": "CANCELLED",
"cancelled_at": "2026-03-19T14:05:00"
},
"meta": {}
}
Errores
Todos los endpoints de esta página pueden devolver los siguientes errores. Para la referencia completa de errores, consultá Manejo de errores.
| Código | HTTP | Descripción |
|---|---|---|
VALIDATION_ERROR | 400 | Parámetros inválidos |
UNAUTHORIZED | 401 | tenant / Authorization / X-API-Key ausente, inválido o expirado |
FORBIDDEN | 403 | El usuario no tiene el permiso requerido |
NOT_FOUND | 404 | Recurso no encontrado |
RATE_LIMITED | 429 | Se superó el límite de solicitudes |
INTERNAL_ERROR | 500 | Error inesperado del servidor |
Recursos relacionados
- Autenticación -- Cómo obtener y usar tokens JWT y claves de API
- Definiciones de Workflow -- Explorá las configuraciones base de workflow disponibles
- Tareas de Workflow -- Completá y reasigná tareas de workflow
- Paginación -- Parámetros y metadatos de paginación estándar
- Límites de solicitudes -- Ventanas de límite de solicitudes y estrategias de reintento
- Manejo de errores -- Referencia completa de códigos de error