Listar formulários
GET /forms — lista os formulários da organização com contadores e as perguntas de cada um.
/formsBetaEscopo necessário: contacts:read ou analytics:read (basta um dos dois)
Lista os formulários da organização (resolvida pela API key), do mais recente para o mais antigo (created_at decrescente). Cada linha traz as visualizações, o total de respostas e as perguntas. O conteúdo das respostas fica em GET /forms/{id}/responses.
Endpoint
GET https://crm.oficinamartech.com/api/v1/formsParâmetros de query
| Parâmetro | Tipo | Descrição |
|---|---|---|
status | draft | published | closed | archived | Filtra por situação. |
limit | int (1-100) | Tamanho da página. Default: 50. |
offset | int (0-10000) | Deslocamento da página. Default: 0. |
Um parâmetro fora desta lista é recusado com 400.
A paginação informa has_more e next_offset, sem total. offset vai até 10.000; além disso next_offset vem null mesmo com has_more true. A resposta usa Cache-Control: private, no-store.
Exemplo
curl -s "https://crm.oficinamartech.com/api/v1/forms?status=published&limit=1" \
-H "Authorization: Bearer crm_live_SEU_PREFIXO_SEU_SEGREDO"Resposta 200
{
"data": [
{
"id": "f0f0f0f0-58cc-4372-a567-0e02b2c3d479",
"name": "Contato comercial",
"slug": "contato-comercial",
"status": "published",
"views_count": 1840,
"responses_count": 212,
"questions": [
{ "key": "nome", "title": "Qual é o seu nome?", "type": "short_text" },
{ "key": "interesse", "title": "O que você procura?", "type": "single_choice" }
],
"published_at": "2026-10-20T12:00:00.000Z",
"closed_at": null,
"created_at": "2026-10-18T13:00:00.000Z",
"updated_at": "2026-11-12T18:20:11.000Z"
}
],
"pagination": {
"limit": 1,
"offset": 0,
"has_more": true,
"next_offset": 1
}
}questions[].key é a chave de answers em GET /forms/{id}/responses. published_at e closed_at são null enquanto o formulário não foi publicado ou encerrado.
Erros
| Status | Código | Quando |
|---|---|---|
400 | invalid_query | Query inválida (parâmetro desconhecido, situação desconhecida, limit ou offset fora da faixa). |
401 | missing_api_key / invalid_api_key | API key ausente, inválida, expirada ou revogada. |
403 | missing_scope | A chave não tem contacts:read nem analytics:read. |
429 | rate_limited | Acima de 120 req/min por chave ou por organização. |
500 | — | Erro interno. |