Lote
Cria em LOTE (até 200) em /leads
POST
/api/v1/leads/lotehttps://tenka.app.br/api/v1/leads/loteCria vários registros numa chamada só. Cada item é independente: item inválido não desfaz o lote. A resposta diz, item por item, o que entrou e por que o resto não entrou: 201 quando tudo entrou, 207 quando foi parcial.
Aceita [{...}] ou {"itens":[...]}. Cada item é independente: item inválido NÃO desfaz o lote. Devolve 201 quando tudo entrou e 207 quando o lote foi parcial, com o motivo de cada falha. A Idempotency-Key vale para a chamada inteira, não por item.
Escopo da chave
Exige chave de leitura e escrita (READ_WRITE) com usuário responsável.
Parâmetros
| Nome | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
Authorization | header | string | sim | Bearer seguido da chave. Alternativa: cabeçalho X-API-Key. |
Idempotency-Key | header | string | não | Chave de idempotência (guardada por 24h, corpo de até 2 MB). Repetir a MESMA chave com o MESMO corpo devolve a resposta original gravada, marcada com o header X-Idempotency-Replay: true — nada é executado de novo. A mesma chave com corpo DIFERENTE recebe 409 (conflito); a mesma chave enquanto a primeira execução ainda roda recebe 409 com Retry-After: 5. Resposta 5xx não congela a chave: a repetição executa de novo. |
Corpo da requisição
Cada item tem o mesmo corpo da criação unitária: POST /api/v1/leads. Limite: 200.
application/json
[ {…}, {…} ] · { "itens": [ {…}, {…} ] }| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
nome | string | sim | Nome. |
email | string | não | E-mail. |
telefone | string | não | Telefone. |
origem | string | não | Origem do lead. |
campanha | string | não | Campanha de origem. |
Campos da resposta
| Nome | Tipo | Descrição |
|---|---|---|
total | integer | Total de itens. |
criados | integer | Itens criados. |
falhas | integer | Itens recusados. |
resultados | array | Um resultado por item, na ordem enviada. |
resultados[].indice | integer | Posição do item no lote (começa em 0). |
resultados[].status | string | criado ou erro. |
resultados[].registro | object | O registro criado (quando status é criado). |
resultados[].erro | string | O motivo da recusa (quando status é erro). |
Códigos de status
| HTTP | Descrição |
|---|---|
| 201 | Todos os itens criados |
| 207 | Lote parcial — veja resultados[].erro |
| 413 | Lote acima de 200 itens |
Mensagens de erro
| HTTP | Mensagem (campo erro) | Quando acontece |
|---|---|---|
| 401 | chave de API ausente ou inválida | Sem cabeçalho de chave, chave revogada ou digitada errada. |
| 401 | chave sem empresa vinculada | A chave existe mas não está ligada a uma conta. Gere outra em Configurações › API. |
| 403 | conta de demonstração: a API pública está desligada na vitrine | A chamada veio para a conta de demonstração: lá a API pública fica desligada. |
| 403 | identidade da chave de API irregular | A conta recusa chaves com identidade irregular (pessoa desligada ou chave sem dono). O corpo traz motivo e comoResolver. |
| 429 | limite de requisições excedido (120/min) | Passou do limite por minuto da chave. Espere o Retry-After. |
| 403 | esta chave é somente leitura — gere uma chave com escopo de escrita | Escrita com chave de escopo somente leitura. |
| 409 | a chave não tem usuário responsável; recrie a chave em Configurações → API para que os registros criados tenham autoria | A chave de escrita não tem usuário responsável: sem autoria, nada é gravado. |
| 400 | Idempotency-Key é obrigatória em escrita desde 2026-12-01 (aviso publicado em 2026-09-01): sem ela, um retry de rede cria o registro duas vezes. Envie um valor único por operação no cabeçalho Idempotency-Key. | Escrita sem Idempotency-Key depois da data de obrigatoriedade. |
| 409 | Idempotency-Key já usada com um corpo DIFERENTE — gere uma chave nova por operação | A mesma Idempotency-Key veio com outro corpo. |
| 409 | requisicao com esta Idempotency-Key ainda em processamento — aguarde e repita | A mesma Idempotency-Key chegou enquanto a primeira chamada ainda rodava. Repita depois do Retry-After. |
| 400 | lote vazio | O lote veio sem nenhum item. |
| 413 | lote com {n} itens; o teto é 200 por chamada | O lote passou do teto de itens por chamada. |
| 400 | envie um array de itens: [{...}] ou {"itens":[{...}]} | O corpo não é um array de itens nem um objeto com itens. |
| 207 · resultados[].erro | nome é obrigatório | Lote de clientes ou leads: faltou nome, ou veio vazio (o item volta com status erro). |