curl -X POST https://api.whaapy.com/funnel/v1/stages \
-H "Authorization: Bearer wha_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Negotiation",
"color": "#f59e0b"
}'
const response = await fetch('https://api.whaapy.com/funnel/v1/stages', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Negotiation',
color: '#f59e0b'
})
});
import requests
response = requests.post(
'https://api.whaapy.com/funnel/v1/stages',
headers={
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
json={
'name': 'Negotiation',
'color': '#f59e0b'
}
)
$ch = curl_init('https://api.whaapy.com/funnel/v1/stages');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'name' => 'Negotiation',
'color' => '#f59e0b'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
{
"stage": {
"id": "550e8400-e29b-41d4-a716-446655440003",
"name": "Negotiation",
"position": 3,
"color": "#f59e0b",
"contact_count": 0,
"created_at": "2026-01-28T12:00:00Z",
"updated_at": "2026-01-28T12:00:00Z"
}
}
Funnels
Crear Etapa
Crea una nueva etapa en el funnel
POST
/
funnel
/
v1
/
stages
curl -X POST https://api.whaapy.com/funnel/v1/stages \
-H "Authorization: Bearer wha_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Negotiation",
"color": "#f59e0b"
}'
const response = await fetch('https://api.whaapy.com/funnel/v1/stages', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Negotiation',
color: '#f59e0b'
})
});
import requests
response = requests.post(
'https://api.whaapy.com/funnel/v1/stages',
headers={
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
json={
'name': 'Negotiation',
'color': '#f59e0b'
}
)
$ch = curl_init('https://api.whaapy.com/funnel/v1/stages');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'name' => 'Negotiation',
'color' => '#f59e0b'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
{
"stage": {
"id": "550e8400-e29b-41d4-a716-446655440003",
"name": "Negotiation",
"position": 3,
"color": "#f59e0b",
"contact_count": 0,
"created_at": "2026-01-28T12:00:00Z",
"updated_at": "2026-01-28T12:00:00Z"
}
}
Scope requerido:
funnels:writeSi no especificas
position, la etapa se agregará automáticamente al final del funnel.Body Parameters
string
required
Nombre de la etapa (1-100 caracteres)
string
default:"#6366f1"
Color en formato hex. Ej:
#10b981number
Posición en el funnel (0 = primera). Si no se proporciona, se asigna al final.
Ejemplos
curl -X POST https://api.whaapy.com/funnel/v1/stages \
-H "Authorization: Bearer wha_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Negotiation",
"color": "#f59e0b"
}'
const response = await fetch('https://api.whaapy.com/funnel/v1/stages', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Negotiation',
color: '#f59e0b'
})
});
import requests
response = requests.post(
'https://api.whaapy.com/funnel/v1/stages',
headers={
'Authorization': 'Bearer wha_TU_API_KEY',
'Content-Type': 'application/json'
},
json={
'name': 'Negotiation',
'color': '#f59e0b'
}
)
$ch = curl_init('https://api.whaapy.com/funnel/v1/stages');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer wha_TU_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'name' => 'Negotiation',
'color' => '#f59e0b'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
Respuesta Exitosa
{
"stage": {
"id": "550e8400-e29b-41d4-a716-446655440003",
"name": "Negotiation",
"position": 3,
"color": "#f59e0b",
"contact_count": 0,
"created_at": "2026-01-28T12:00:00Z",
"updated_at": "2026-01-28T12:00:00Z"
}
}
Errores
{
"error": "validation_error",
"message": "Datos inválidos",
"details": {
"name": ["El nombre es requerido"],
"color": ["Color inválido. Usar formato hex: #RRGGBB"]
}
}
Webhooks
Cuando creas una etapa, se dispara el webhookfunnel_stage.created:
{
"event": "funnel_stage.created",
"data": {
"stage_id": "550e8400-e29b-41d4-a716-446655440003",
"name": "Negotiation",
"position": 3,
"color": "#f59e0b",
"created_at": "2026-01-28T12:00:00Z"
}
}
Próximos Pasos
Listar Etapas
Ver todas las etapas
Mover Contacto
Asignar contactos a la nueva etapa
Was this page helpful?