Seu primeiro request
Valide a chave com GET /v1/me. Sem payload, sem dados sensiveis: a resposta confirma o identificador da chave, a conta associada, o prefixo, o ambiente e os scopes autorizados.
- Crie uma API keyAcesse o dashboard autenticado e crie uma chave em Configuracoes > API keys.
- Defina a base URLUse
https://public-api.ornexus.compara producao. - Execute o requestSubstitua
onx_live_...pela chave criada. Chavesok_*legadas continuam aceitas para compatibilidade ate rotacao ou revogacao. Nao commite tokens nem cole chaves reais em tickets ou logs.
curl https://public-api.ornexus.com/v1/me \
-H "Authorization: Bearer onx_live_..." \
-H "Accept: application/json"Resposta esperada
{
"id": "pak_...",
"user_id": "usr_...",
"prefix": "onx_live_abcd1234",
"environment": "live",
"scopes": ["leads:read", "campaigns:read"]
}Inserir lead com consentimento
Use POST /v1/leads/upsert para criar ou atualizar o lead pelo seu external_id. Para liberar a saudacao proativa do assistente, envie o consentimento explicito em custom_fields.public_api_greeting_consent com valor booleano true. Use Idempotency-Key por mutacao logica e mantenha evidencias de consentimento fora de logs publicos.
curl https://public-api.ornexus.com/v1/leads/upsert \
-X POST \
-H "Authorization: Bearer onx_live_..." \
-H "Idempotency-Key: lead-upsert-lp-123" \
-H "Content-Type: application/json" \
-d '{
"external_id": "lp-lead-123",
"phone": "<lead-whatsapp-number>",
"name": "Lead de exemplo",
"email": "[email protected]",
"assistant_id": "asst_123",
"stage": "new",
"tags": ["lp", "public-api"],
"custom_fields": {
"public_api_greeting_consent": true,
"consent_source": "landing_page",
"consent_text_version": "lp-v1",
"consent_captured_at": "2026-05-09T05:10:00Z"
}
}'{
"id": "thread_123",
"lead_id": "thread_123",
"external_id": "lp-lead-123",
"mode": "created",
"updated_at": "2026-05-09T05:10:01Z",
"changed_fields": ["external_id", "phone", "name", "email", "assistant_id", "tags", "custom_fields"],
"request_id": "req_..."
}Assistente assume e envia a saudacao
Com o lead_id retornado, chame POST /v1/leads/{lead_id}/assistant-takeover com Idempotency-Key e send_greeting: true. A chamada ativa a IA, associa o assistente, aplica a autorizacao local e enfileira a saudacao quando consentimento, WhatsApp/Evolution e demais gates estiverem prontos.
curl https://public-api.ornexus.com/v1/leads/thread_123/assistant-takeover \
-X POST \
-H "Authorization: Bearer onx_live_..." \
-H "Idempotency-Key: assistant-takeover-lp-123" \
-H "Content-Type: application/json" \
-d '{
"assistant_id": "asst_123",
"mode": "ai_assume",
"reason": "lead_created_from_lp_with_consent",
"send_greeting": true
}'{
"lead_id": "thread_123",
"thread_id": "thread_123",
"assistant_id": "asst_123",
"previous_state": {
"status": "new",
"ai_enabled": false,
"assistant_id": null,
"assigned_to": null
},
"new_state": {
"status": "unresolved",
"ai_enabled": true,
"assistant_id": "asst_123",
"assigned_to": null
},
"greeting": {
"requested": true,
"status": "queued",
"reason": "ready",
"message_id": null,
"provider_message_id": null,
"provider": null,
"idempotent": false,
"dispatched_at": null
},
"idempotent": false,
"at": "2026-05-09T05:10:02Z"
}Status documentados: queued, sent, skipped, blocked e failed. Reasons principais: feature_disabled, consent_missing, provider_not_ready, self_send, already_dispatched e provider_error. Replays com a mesma idempotency key retornam o mesmo outcome e nao devem duplicar mensagens. Para rollback, desligue ENABLE_PUBLIC_API_TAKEOVER_GREETING_SEND: o takeover/autorizacao local continua, mas a saudacao volta ao comportamento seguro skipped/feature_disabled.
Acompanhar a conversa
Depois do takeover, o lead interage pelo WhatsApp conectado e o assistente responde pelos fluxos internos. Pela Public API, use leitura de conversas/mensagens ou webhooks para acompanhar o andamento. Envio direto de mensagem customizada porPOST /v1/conversations/{thread_id}/messages ainda nao esta publicado na Public API v1.
curl https://public-api.ornexus.com/v1/conversations/thread_123/messages \
-H "Authorization: Bearer onx_live_..." \
-H "Accept: application/json"