Pular para o conteudo principal
OrNexus
Quickstart

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.

  1. Crie uma API keyAcesse o dashboard autenticado e crie uma chave em Configuracoes > API keys.
  2. Defina a base URLUse https://public-api.ornexus.com para producao.
  3. Execute o requestSubstitua onx_live_... pela chave criada. Chaves ok_* legadas continuam aceitas para compatibilidade ate rotacao ou revogacao. Nao commite tokens nem cole chaves reais em tickets ou logs.
curl
curl https://public-api.ornexus.com/v1/me \
  -H "Authorization: Bearer onx_live_..." \
  -H "Accept: application/json"

Resposta esperada

json
{
  "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
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"
    }
  }'
json
{
  "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
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
  }'
json
{
  "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
curl https://public-api.ornexus.com/v1/conversations/thread_123/messages \
  -H "Authorization: Bearer onx_live_..." \
  -H "Accept: application/json"

Proximos passos