ID do formulário

Erros

Todos os códigos de erro que o Ikiform retorna, com status HTTP, causa e correção.

Os envios de formulário e a API REST compartilham o mesmo envelope de erro. Requisições JSON o recebem com o status HTTP correspondente; envios de formulário pelo navegador recebem uma página de erro hospedada com a mesma mensagem e o mesmo status.

O envelope de erro

Erro
{
  "ok": false,
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Please slow down."
  },
  "request_id": "req_01k7v2c9t3e8m5q4x6z0a1b2c3"
}
  • error.code é estável; use-o nas suas condições. error.message é um texto em inglês simples para pessoas e pode mudar.
  • error.fields aparece em erros de validação, indexado pelo id do campo, cada um com uma lista de mensagens. Erros sobre o corpo inteiro usam a chave _form.
  • error.challenge_url aparece em challenge_required.
  • request_id corresponde ao header X-Request-Id que toda resposta traz.
  • Respostas com limite de taxa atingido trazem Retry-After em segundos. Os dois headers podem ser lidos pelo código no navegador.

Códigos

400 invalid_body

MensagemThe request body could not be read.
CausaJSON ou multipart malformado, um array ou string JSON em vez de um objeto, ou uma chave de idempotência com mais de 255 caracteres.
CorreçãoEnvie um único objeto JSON, ou deixe o navegador ou o FormData montar o corpo.

400 invalid_request

MensagemThe request is invalid.
Causalimit, status, form_id ou cursor é inválido. A mensagem indica o parâmetro.
CorreçãoUse limit de 1 a 100, status received ou spam, um id frm_ real e cursores exatamente como foram retornados.

401 unauthorized

MensagemA valid API key is required.
CausaSem header Authorization, não é um token Bearer, ou a chave é desconhecida, revogada ou expirada.
CorreçãoEnvie Authorization: Bearer ik_sk_... com uma chave secreta válida.

402 plan_required

MensagemThis form isn't accepting submissions right now.
CausaO workspace não tem plano ativo. Isso só pode acontecer depois que a cobrança for ativada.
CorreçãoEscolha um plano no painel em Settings.

403 forbidden

MensagemYou do not have access to this resource.
CausaA chave de API está malformada, pertence a outro workspace, é publicável na API REST ou não tem o escopo necessário.
CorreçãoUse uma chave secreta deste workspace com o escopo indicado na mensagem.

403 origin_not_allowed

MensagemThis form does not accept submissions from this site.
CausaO envio veio de um site fora dos domínios permitidos do formulário e o formulário rejeita divergências, ou uma chave publicável foi usada a partir de um domínio que não está listado na chave.
CorreçãoAdicione o site em Allowed domains ou aos domínios da chave. Para envios de servidor, use uma chave secreta.

403 form_paused

MensagemThis form is not accepting submissions right now.
CausaO formulário está pausado no painel.
CorreçãoRetome o formulário.

403 captcha_failed

MensagemThe captcha check failed. Please try again.
CausaO token do Turnstile está ausente, expirou, já foi usado ou não passou na verificação.
CorreçãoObtenha um token novo a cada envio. Com suas próprias chaves, confira se a site key corresponde ao segredo.

403 challenge_required

MensagemComplete the human check, then send the form again.
CausaO formulário usa a verificação humana do Ikiform e um envio JSON chegou sem token.
CorreçãoChame challenge(formId) do SDK e passe o token, ou use error.challenge_url. Envios de servidor podem enviar uma chave secreta no lugar.

404 not_found

MensagemNot found.
CausaO formulário não existe, foi excluído ou desativado, ou o id ou a rota estão errados. Também é retornado em um GET para /f/<formId>.
CorreçãoCopie o endpoint da visão geral do formulário e envie para ele em vez de abri-lo em uma aba.

405 method_not_allowed

MensagemThis method is not allowed here.
CausaUm preflight do navegador na API REST, que é só de servidor para servidor.
CorreçãoChame /api/v1 a partir do seu backend.

409 idempotency_in_progress

MensagemA request with this idempotency key is still being processed.
CausaUma requisição com esta chave de idempotência ainda está sendo processada.
CorreçãoEspere um momento e tente de novo com a mesma chave; você vai receber a primeira resposta.

413 payload_too_large

MensagemThe submission is too large.
CausaO corpo, um nome de campo, um valor ou o número de campos passou do limite. A mensagem diz qual.
CorreçãoVeja Limites. Divida textos grandes em vários campos ou guarde arquivos em outro lugar e envie um link.

415 unsupported_media_type

MensagemSend the form as urlencoded, multipart or JSON.
CausaO Content-Type não é urlencoded, multipart nem JSON, ou está ausente.
CorreçãoDefina Content-Type: application/json ao enviar JSON.

415 unsupported_charset

MensagemOnly UTF-8 is supported.
CausaO corpo não é UTF-8, ou declara outro charset.
CorreçãoCodifique em UTF-8. Adicione accept-charset="utf-8" a formulários HTML antigos.

422 validation_failed

MensagemSome fields are invalid.
CausaOs campos falharam na validação. error.fields associa ids de campo a mensagens.
CorreçãoMostre as mensagens ao lado dos campos. Veja Campos.

422 files_not_supported

MensagemFile uploads are not supported yet.
CausaO envio contém um arquivo. O upload de arquivos ainda não existe.
CorreçãoRemova os inputs de arquivo, ou faça upload dos arquivos em outro lugar e envie o link.

422 too_deep

MensagemThe JSON body is nested too deeply.
CausaO corpo JSON tem mais de 3 níveis de aninhamento, contando o objeto de topo.
CorreçãoAchate os dados, por exemplo { "address_city": "London" }.

422 idempotency_mismatch

MensagemThis idempotency key was already used with a different payload.
CausaEsta chave de idempotência já foi usada neste formulário nas últimas 24 horas com campos diferentes.
CorreçãoUse uma chave nova para dados novos. Mantenha a mesma chave só para novas tentativas idênticas.

429 rate_limited

MensagemToo many requests. Please slow down.
CausaAcima de um limite de taxa. Retry-After diz quantos segundos esperar.
CorreçãoEspere e tente de novo. Se visitantes reais atingirem o limite, mude o limite de taxa do formulário.

429 quota_exceeded

MensagemThis form isn't accepting submissions right now.
CausaO workspace recebeu 2 vezes o seu limite mensal de envios neste mês.
CorreçãoFaça upgrade, ou espere o próximo mês. Veja Uso mensal.

500 server_error

MensagemSomething went wrong on our side.
CausaAlgo falhou do lado do Ikiform.
CorreçãoTente de novo com backoff e uma chave de idempotência. Se continuar acontecendo, informe o request_id.

O que não é erro

  • Spam recebe o mesmo 201 ou redirecionamento de um envio real. Procure-o no filtro de spam do painel.
  • Um _redirect não permitido é ignorado, e o navegador cai na página de agradecimento hospedada.
  • Um _replyto que não seja um único endereço de e-mail válido é ignorado.

Novas tentativas

  • Tente de novo um 429 depois do Retry-After, e 500, 409 ou erros de rede com backoff. Envie uma chave de idempotência para que uma nova tentativa nunca crie um duplicado.
  • Não repita outros erros 4xx sem mudanças. Corrija a requisição primeiro.