Formulários de captação
Cria, edita, lista e apaga formulários do seller, com a definição de campos e configurações.
O formulário é definido por uma lista de campos (fields) e um objeto de configurações (settings). A vitrine monta a página a partir dessa definição e valida o que o visitante envia. Apagar um formulário apaga também todos os leads dele.
Campos do formulário
Campos de um item de `fields`
idstringobrigatóriodata de cada lead. Obrigatória.typestringobrigatóriotexttextareaemailphoneselectcheckboxradiofiledatenumberhiddenlabelstringhidden.placeholderstringrequiredbooleanorderintegeroptionsarray{label, value}. Obrigatórias em select e radio; em checkbox podem faltar se houver label (caixa única).validationobjectmin_length, max_length, min, max, pattern, file_types, max_file_size.Campos de `settings`
success_messagestringnotification_emailstringredirect_urlstringmax_submissionsinteger0 ou ausente = sem limite.captcha_enabledbooleancaptcha_providerstringhoneypotturnstilerecaptcha-v3honeypot (padrão), turnstile ou recaptcha-v3. O valor é gravado sem validação e hoje a plataforma só aplica a verificação honeypot (um campo oculto _hp que deve ficar vazio).captcha_site_keystringListar formulários
/api/v1/vendor/formsSellerLista os formulários do seller
Do mais novo para o mais antigo, sem paginação.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/forms" \
-H "Authorization: Bearer $TOKEN"{
"forms": [
{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"name": "Fale com a loja",
"slug": "fale-com-a-loja",
"description": "Dúvidas e pedidos de orçamento.",
"status": "draft",
"fields": [
{
"id": "nome",
"type": "text",
"label": "Nome",
"required": true,
"order": 1
},
{
"id": "email",
"type": "email",
"label": "E-mail",
"required": true,
"order": 2
},
{
"id": "assunto",
"type": "select",
"label": "Assunto",
"required": false,
"order": 3,
"options": [
{
"label": "Dúvida",
"value": "duvida"
},
{
"label": "Orçamento",
"value": "orcamento"
}
]
},
{
"id": "mensagem",
"type": "textarea",
"label": "Mensagem",
"required": true,
"order": 4
}
],
"settings": {
"success_message": "Recebemos sua mensagem.",
"notification_email": "contato@exemplo.com.br",
"captcha_enabled": true,
"captcha_provider": "honeypot"
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}
],
"total": 1
}Campos da resposta
formsarrayFormulários do seller.
iduuidnamestringslugstringdescriptionstringstatusstringdraftactivearchiveddraft, active ou archived.fieldsarraysettingsobjectvendor_iduuidcreated_atstringupdated_atstringtotalintegerConsultar formulário
/api/v1/vendor/forms/{id}SellerDevolve um formulário
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/forms/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN"{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"name": "Fale com a loja",
"slug": "fale-com-a-loja",
"description": "Dúvidas e pedidos de orçamento.",
"status": "draft",
"fields": [
{
"id": "nome",
"type": "text",
"label": "Nome",
"required": true,
"order": 1
},
{
"id": "email",
"type": "email",
"label": "E-mail",
"required": true,
"order": 2
},
{
"id": "assunto",
"type": "select",
"label": "Assunto",
"required": false,
"order": 3,
"options": [
{
"label": "Dúvida",
"value": "duvida"
},
{
"label": "Orçamento",
"value": "orcamento"
}
]
},
{
"id": "mensagem",
"type": "textarea",
"label": "Mensagem",
"required": true,
"order": 4
}
],
"settings": {
"success_message": "Recebemos sua mensagem.",
"notification_email": "contato@exemplo.com.br",
"captcha_enabled": true,
"captcha_provider": "honeypot"
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Criar formulário
/api/v1/vendor/formsSellerCria um formulário
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Corpo da requisição
namestringobrigatórioslugstringobrigatórioa-z, 0-9 e hífens entre blocos (fale-com-a-loja). Único na loja inteira.descriptionstringstatusstringpadrão: draftdraftactivearchiveddraft, active ou archived.fieldsarraysettingsobject{}.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/forms" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Fale com a loja",
"slug": "fale-com-a-loja",
"description": "Dúvidas e pedidos de orçamento.",
"status": "draft",
"fields": [
{
"id": "nome",
"type": "text",
"label": "Nome",
"required": true,
"order": 1
},
{
"id": "email",
"type": "email",
"label": "E-mail",
"required": true,
"order": 2
},
{
"id": "assunto",
"type": "select",
"label": "Assunto",
"required": false,
"order": 3,
"options": [
{
"label": "Dúvida",
"value": "duvida"
},
{
"label": "Orçamento",
"value": "orcamento"
}
]
},
{
"id": "mensagem",
"type": "textarea",
"label": "Mensagem",
"required": true,
"order": 4
}
],
"settings": {
"success_message": "Recebemos sua mensagem.",
"notification_email": "contato@exemplo.com.br",
"captcha_enabled": true,
"captcha_provider": "honeypot"
}
}'{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"name": "Fale com a loja",
"slug": "fale-com-a-loja",
"description": "Dúvidas e pedidos de orçamento.",
"status": "draft",
"fields": [
{
"id": "nome",
"type": "text",
"label": "Nome",
"required": true,
"order": 1
},
{
"id": "email",
"type": "email",
"label": "E-mail",
"required": true,
"order": 2
},
{
"id": "assunto",
"type": "select",
"label": "Assunto",
"required": false,
"order": 3,
"options": [
{
"label": "Dúvida",
"value": "duvida"
},
{
"label": "Orçamento",
"value": "orcamento"
}
]
},
{
"id": "mensagem",
"type": "textarea",
"label": "Mensagem",
"required": true,
"order": 4
}
],
"settings": {
"success_message": "Recebemos sua mensagem.",
"notification_email": "contato@exemplo.com.br",
"captcha_enabled": true,
"captcha_provider": "honeypot"
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Alterar formulário
/api/v1/vendor/forms/{id}SellerAltera um formulário
Parcial. fields e settings, quando enviados, substituem o valor inteiro (não há mesclagem): reenvie a lista completa de campos.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
...objectExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/forms/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "active"
}'{
"id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"name": "Fale com a loja",
"slug": "fale-com-a-loja",
"description": "Dúvidas e pedidos de orçamento.",
"status": "active",
"fields": [
{
"id": "nome",
"type": "text",
"label": "Nome",
"required": true,
"order": 1
},
{
"id": "email",
"type": "email",
"label": "E-mail",
"required": true,
"order": 2
},
{
"id": "assunto",
"type": "select",
"label": "Assunto",
"required": false,
"order": 3,
"options": [
{
"label": "Dúvida",
"value": "duvida"
},
{
"label": "Orçamento",
"value": "orcamento"
}
]
},
{
"id": "mensagem",
"type": "textarea",
"label": "Mensagem",
"required": true,
"order": 4
}
],
"settings": {
"success_message": "Recebemos sua mensagem.",
"notification_email": "contato@exemplo.com.br",
"captcha_enabled": true,
"captcha_provider": "honeypot"
},
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Apagar formulário
/api/v1/vendor/forms/{id}SellerApaga um formulário e seus leads
Remove o formulário e todos os leads recebidos por ele. Para parar de receber sem perder os leads, passe o status para archived.
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/forms/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN"{
"message": "form deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário do seller (equipe) não tem nenhum dos privilégios exigidos. O dono da loja nunca recebe este erro. | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
| 403 | O usuário autenticado não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
| 400 | JSON inválido. | {"error":"invalid request body","detail":"..."} |
| 400 | Dados do formulário inválidos. Códigos: NAME_REQUIRED, SLUG_REQUIRED, INVALID_SLUG, INVALID_STATUS, SLUG_ALREADY_EXISTS, INVALID_FIELDS_JSON, INVALID_FIELD_ID:<posição>, DUPLICATE_FIELD_ID:<id>, INVALID_FIELD_TYPE:<tipo>, INVALID_FIELD_LABEL:<id>, FIELD_OPTIONS_REQUIRED:<id>, INVALID_SETTINGS_JSON, INVALID_NOTIFICATION_EMAIL. | {"error":"SLUG_ALREADY_EXISTS"} |
| 404 | Formulário inexistente ou de outro seller (GET). | {"error":"form not found"} |
| 404 | Formulário inexistente ou de outro seller (PUT e DELETE). | {"error":"FORM_NOT_FOUND"} |