# Criar campanha Source: https://docs.useintegra.com.br/api-reference/endpoint/create-campaign POST /api/v1/campaigns Cria uma campanha de ligações automáticas. As ligações serão iniciadas no horário agendado. > **Onde encontrar os IDs?** > - `project_id`: No painel, clique no projeto e copie o ID no header (ícone de clipboard ao lado do nome) > - `agent_id`: No painel, cada card de agente mostra o ID no rodapé (ícone de clipboard) > - `phone_number_id`: Use o endpoint GET /api/v1/phone-numbers ou copie do painel em Telecom # Criar webhook Source: https://docs.useintegra.com.br/api-reference/endpoint/create-webhook POST /api/v1/webhooks Cria um webhook para receber notificações de eventos. O secret retornado só é exibido uma vez — guarde-o para verificar assinaturas HMAC-SHA256. Máximo de 10 webhooks por organização. # Excluir webhook Source: https://docs.useintegra.com.br/api-reference/endpoint/delete-webhook DELETE /api/v1/webhooks/{id} # Detalhes da chamada Source: https://docs.useintegra.com.br/api-reference/endpoint/get-call GET /api/v1/calls/{id} # Detalhes da campanha Source: https://docs.useintegra.com.br/api-reference/endpoint/get-campaign GET /api/v1/campaigns/{id} # Detalhes do webhook Source: https://docs.useintegra.com.br/api-reference/endpoint/get-webhook GET /api/v1/webhooks/{id} # Listar chamadas Source: https://docs.useintegra.com.br/api-reference/endpoint/list-calls GET /api/v1/calls # Listar campanhas Source: https://docs.useintegra.com.br/api-reference/endpoint/list-campaigns GET /api/v1/campaigns # Listar entregas Source: https://docs.useintegra.com.br/api-reference/endpoint/list-webhook-deliveries GET /api/v1/webhooks/{id}/deliveries # Listar webhooks Source: https://docs.useintegra.com.br/api-reference/endpoint/list-webhooks GET /api/v1/webhooks # Atualizar webhook Source: https://docs.useintegra.com.br/api-reference/endpoint/update-webhook PATCH /api/v1/webhooks/{id} # Introdução Source: https://docs.useintegra.com.br/api-reference/introduction Visão geral da API BFI da Integra ## Base URL ``` https://api.useintegra.com.br ``` ## Autenticação Todos os endpoints requerem autenticação via API Key no header `Authorization`: ```bash theme={null} Authorization: Bearer ik_live_sua_key_aqui ``` Gere sua key no painel da Integra em Settings > API Keys. ## Endpoints disponíveis ### Campanhas | Método | Endpoint | Descrição | | ------ | ------------------------ | ------------------------------- | | `GET` | `/api/v1/campaigns` | Listar campanhas da organização | | `GET` | `/api/v1/campaigns/{id}` | Detalhes de uma campanha | | `POST` | `/api/v1/campaigns` | Criar nova campanha de ligações | ### Chamadas | Método | Endpoint | Descrição | | ------ | -------------------- | ---------------------------- | | `GET` | `/api/v1/calls` | Listar histórico de chamadas | | `GET` | `/api/v1/calls/{id}` | Detalhes de uma chamada | ## Rate Limiting Limite de **60 requests por minuto** por API Key. Veja [Rate Limiting](/rate-limiting) para mais detalhes. ## Formato de erro ```json theme={null} { "error": "Descrição do erro" } ``` Veja [Erros](/errors) para a lista completa de códigos. # Autenticação Source: https://docs.useintegra.com.br/authentication Como autenticar suas chamadas à API usando API Keys Todas as rotas `/api/v1/*` requerem autenticação via API Key. ## Header de autenticação ```bash theme={null} Authorization: Bearer ik_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` ## Como obter uma API Key Entre em [app.useintegra.com.br](https://app.useintegra.com.br) e vá em **Settings > API Keys**. Clique em **Nova API Key** e dê um nome descritivo (ex: "Integração CRM"). A key só será exibida uma vez. Se perdê-la, revogue e crie uma nova. ## Formato da key As API Keys seguem o formato `ik_live_` seguido de 64 caracteres hexadecimais: ``` ik_live_a1b2c3d4e5f6789... ``` ## Segurança * A key é hasheada com **SHA-256** antes de ser armazenada * Cada key pertence a uma **organização** e filtra dados automaticamente * Keys podem ser **revogadas** a qualquer momento no painel * O último uso de cada key é rastreado automaticamente ## Erros de autenticação | Status | Mensagem | Causa | | ------ | ---------------------------- | ----------------------------- | | `401` | Missing Authorization header | Header não enviado | | `401` | Invalid API key format | Key não começa com `ik_live_` | | `401` | Invalid or revoked API key | Key inválida ou revogada | # Erros Source: https://docs.useintegra.com.br/errors Códigos de erro e formato de resposta Todas as respostas de erro seguem o mesmo formato JSON. ## Formato ```json theme={null} { "error": "Descrição do erro" } ``` ## Códigos de erro | Status | Erro | Causa | | ------ | --------------------- | -------------------------------------------------- | | `400` | Bad Request | Body ou parâmetros inválidos | | `401` | Unauthorized | API Key ausente, inválida ou revogada | | `403` | Forbidden | Sem permissão para o recurso | | `404` | Not Found | Recurso não encontrado | | `429` | Too Many Requests | [Rate limit](/rate-limiting) excedido (60 req/min) | | `500` | Internal Server Error | Erro interno — contate suporte | ## Exemplos ### Key inválida (401) ```bash theme={null} curl -H "Authorization: Bearer ik_live_invalida" \ https://api.useintegra.com.br/api/v1/campaigns ``` ```json Response theme={null} { "error": "Invalid or revoked API key" } ``` ### Recurso não encontrado (404) ```bash theme={null} curl -H "Authorization: Bearer ik_live_xxx" \ https://api.useintegra.com.br/api/v1/campaigns/id-inexistente ``` ```json Response theme={null} { "error": "Campaign not found" } ``` ### Rate limit excedido (429) ```json Response theme={null} { "error": "Rate limit exceeded. Try again later." } ``` Sempre verifique o campo `error` na resposta para entender o que aconteceu. Os erros são descritivos em inglês para facilitar o debugging. # Introdução Source: https://docs.useintegra.com.br/index API pública da plataforma Integra para integrações externas ## Bem-vindo à Integra API A **Integra BFI** (Backend for Integrations) é a API pública da plataforma Integra. Com ela, você pode integrar campanhas de ligações e histórico de chamadas diretamente no seu sistema. Configure sua primeira integração em 3 minutos. ## O que você pode fazer Crie e gerencie campanhas de ligações automatizadas. Consulte o histórico completo de chamadas com transcrições. Gere API Keys no painel e autentique suas chamadas. Documentação completa de todos os endpoints. ## Base URL ``` https://api.useintegra.com.br ``` Todos os endpoints da API estão sob o prefixo `/api/v1/`. # Quickstart Source: https://docs.useintegra.com.br/quickstart Configure sua primeira integração em 3 minutos Acesse o painel da Integra em **Settings > API Keys** e clique em **Nova API Key**. Copie a key gerada (`ik_live_...`) imediatamente — ela **só será exibida uma vez**. Envie o header `Authorization` em todas as chamadas: ```bash theme={null} Authorization: Bearer ik_live_sua_key_aqui ``` ```bash theme={null} curl -H "Authorization: Bearer ik_live_xxx" \ https://api.useintegra.com.br/api/v1/campaigns ``` Se a resposta for `200 OK` com JSON, sua integração está funcionando! ## Próximos passos Entenda o fluxo completo de autenticação via API Key. Conheça os limites de requisições por minuto. Veja os códigos de erro e como tratá-los. Explore todos os endpoints disponíveis. # Rate Limiting Source: https://docs.useintegra.com.br/rate-limiting Limites de requisições por minuto e como monitorá-los A API limita a **60 requests por minuto** por API Key. ## Headers de resposta Toda resposta inclui headers de rate limiting: | Header | Descrição | | ----------------------- | ---------------------------------- | | `X-RateLimit-Limit` | Limite total (60/min) | | `X-RateLimit-Remaining` | Requests restantes na janela | | `X-RateLimit-Reset` | Timestamp de reset (epoch seconds) | ## Exemplo ```bash theme={null} < X-RateLimit-Limit: 60 < X-RateLimit-Remaining: 42 < X-RateLimit-Reset: 1709913600 ``` ## Excedendo o limite Ao exceder o limite, a API retorna `429 Too Many Requests`: ```json theme={null} { "error": "Rate limit exceeded. Try again later." } ``` ## Boas práticas Verifique `X-RateLimit-Remaining` para evitar atingir o limite. Implemente retry com backoff exponencial ao receber `429`. Aguarde `X-RateLimit-Reset` antes de tentar novamente. Cache respostas quando possível para reduzir chamadas.