curl -X GET "https://api.whaapy.com/funnel/v1/stages" \
-H "Authorization: Bearer wha_TU_API_KEY"
const response = await fetch('https://api.whaapy.com/funnel/v1/stages', {
headers: { 'Authorization': 'Bearer wha_TU_API_KEY' }
});
const data = await response.json();
console.log(data.stages);
import requests
response = requests.get(
'https://api.whaapy.com/funnel/v1/stages',
headers={'Authorization': 'Bearer wha_TU_API_KEY'}
)
print(response.json())
$ch = curl_init('https://api.whaapy.com/funnel/v1/stages');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data['stages']);
{
"stages": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Lead",
"position": 0,
"color": "#6366f1",
"contact_count": 120,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Qualified",
"position": 1,
"color": "#10b981",
"contact_count": 45,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"name": "Closed",
"position": 2,
"color": "#f59e0b",
"contact_count": 30,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
}
],
"total": 3
}
Funnels
Listar Etapas
Obtiene todas las etapas del funnel con conteo de contactos
GET
/
funnel
/
v1
/
stages
curl -X GET "https://api.whaapy.com/funnel/v1/stages" \
-H "Authorization: Bearer wha_TU_API_KEY"
const response = await fetch('https://api.whaapy.com/funnel/v1/stages', {
headers: { 'Authorization': 'Bearer wha_TU_API_KEY' }
});
const data = await response.json();
console.log(data.stages);
import requests
response = requests.get(
'https://api.whaapy.com/funnel/v1/stages',
headers={'Authorization': 'Bearer wha_TU_API_KEY'}
)
print(response.json())
$ch = curl_init('https://api.whaapy.com/funnel/v1/stages');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data['stages']);
{
"stages": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Lead",
"position": 0,
"color": "#6366f1",
"contact_count": 120,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Qualified",
"position": 1,
"color": "#10b981",
"contact_count": 45,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"name": "Closed",
"position": 2,
"color": "#f59e0b",
"contact_count": 30,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
}
],
"total": 3
}
Scope requerido:
funnels:readLas etapas siempre se devuelven ordenadas por
position (ascendente). El contact_count se calcula dinámicamente.Ejemplos
curl -X GET "https://api.whaapy.com/funnel/v1/stages" \
-H "Authorization: Bearer wha_TU_API_KEY"
const response = await fetch('https://api.whaapy.com/funnel/v1/stages', {
headers: { 'Authorization': 'Bearer wha_TU_API_KEY' }
});
const data = await response.json();
console.log(data.stages);
import requests
response = requests.get(
'https://api.whaapy.com/funnel/v1/stages',
headers={'Authorization': 'Bearer wha_TU_API_KEY'}
)
print(response.json())
$ch = curl_init('https://api.whaapy.com/funnel/v1/stages');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data['stages']);
Respuesta Exitosa
{
"stages": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Lead",
"position": 0,
"color": "#6366f1",
"contact_count": 120,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Qualified",
"position": 1,
"color": "#10b981",
"contact_count": 45,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
},
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"name": "Closed",
"position": 2,
"color": "#f59e0b",
"contact_count": 30,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-28T10:00:00Z"
}
],
"total": 3
}
Campos de Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
stages | array | Array de etapas ordenadas por posición |
stages[].id | string | UUID de la etapa |
stages[].name | string | Nombre de la etapa |
stages[].position | number | Posición en el funnel (0 = primera) |
stages[].color | string | Color en formato hex |
stages[].contact_count | number | Número de contactos en esta etapa |
total | number | Total de etapas |
Errores
401 Unauthorized
{
"error": "unauthorized",
"message": "API key inválida o expirada"
}
403 Forbidden
{
"error": "forbidden",
"message": "Scope 'funnels:read' requerido"
}
Próximos Pasos
Crear Etapa
Agregar nueva etapa al funnel
Mover Contacto
Mover contacto entre etapas
Reordenar
Cambiar orden de etapas
Listar Contactos
Filtrar contactos por etapa
Was this page helpful?