> ## Documentation Index
> Fetch the complete documentation index at: https://docs.olie.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Formato da resposta de cada campo

> O valor de answer de cada tipo de campo, no corpo de gravar respostas

Cada item de `form_answers` leva o `id` do campo e o `answer`. O `id` vem da [leitura](/api-reference/general/form-answer-pivot#ler-respostas). Esta página é o formato de `answer` para os 21 tipos.

O endereço do formulário (o pivot) fica em [Formulários dinâmicos e o pivot](/api-reference/general/form-answer-pivot). A definição do campo (`type`, `options`, `is_multiple`) fica em [Criar e editar formulários pela API](/guides/forms/forms-api#os-tipos-de-campo).

Os exemplos abaixo são só o valor de `answer` no corpo da gravação.

Checkbox, link, anexo, usuário, contato, cliente e projeto usam sempre um array, mesmo com um único item. Com `is_multiple` desligado, envie um array de um elemento. No checkbox, `is_multiple` não limita: o array pode trazer várias opções.

## Texto e números

<h3 id="short_text">
  Texto curto
</h3>

`short_text`. Uma string.

```json theme={null}
"Rua das Flores, 100"
```

<h3 id="long_text">
  Texto longo
</h3>

`long_text`. Uma string. Quebras de linha entram no texto.

```json theme={null}
"Primeira linha\nSegunda linha"
```

<h3 id="rich_text">
  Texto com formatação
</h3>

`rich_text`. Markdown ou o documento do editor, no formato TipTap.

```json theme={null}
"**Texto** com negrito"
```

```json theme={null}
{
  "type": "doc",
  "content": [
    {
      "type": "paragraph",
      "content": [
        { "type": "text", "text": "Texto com " },
        {
          "type": "text",
          "text": "negrito",
          "marks": [{ "type": "bold" }]
        }
      ]
    }
  ]
}
```

Na leitura, o mesmo campo também devolve `answer_markdown`.

<h3 id="number">
  Numérico
</h3>

`number`. Um número JSON ou uma string numérica. Texto que não é número é recusado.

```json theme={null}
1500
```

<h3 id="currency">
  Moeda
</h3>

`currency`. O formulário grava um número JSON em real (BRL), com duas casas, de `0` a `999999999999.99`. `1500.5` é R\$ 1.500,50. O input não aceita valor negativo.

```json theme={null}
1500.5
```

<h3 id="counter">
  Contador
</h3>

`counter`. Um número JSON, no mesmo formato de [Numérico](#number).

```json theme={null}
3
```

Só é possível responder este campo na ação de automação **Atualizar contador**.

## Escolha entre opções

O texto do `answer` é o texto da opção, exatamente como está em `options`. Não é um id. Opção que não existe na lista do campo é recusada.

<h3 id="select">
  Seleção de lista
</h3>

`select`. Uma string, uma das opções.

```json theme={null}
"Indicação"
```

<h3 id="radio">
  Seleção de única
</h3>

`radio`. Uma string, uma das opções.

```json theme={null}
"Bom"
```

<h3 id="checkbox">
  Checkbox
</h3>

`checkbox`. Array com as opções marcadas. Uma string JSON desse array também é aceita. Uma opção solta, fora do array, é recusada.

```json theme={null}
["Indicação", "Evento"]
```

<h3 id="matrix">
  Matriz
</h3>

`matrix`. Objeto em que cada chave de linha aponta para um objeto de colunas. As chaves são os `key` de `rows` e `columns`, não os rótulos. Uma string JSON desse objeto também é aceita. Ver [Campo matriz](/guides/forms/forms-api#campo-matriz).

```json theme={null}
{
  "atend": { "nota": "Bom", "obs": "Rápido" },
  "preco": { "nota": "Ok" }
}
```

Célula vazia (`null`, `""` ou `[]`) sai do objeto antes de gravar. Linha que fica sem células também sai. Matriz inteira vazia vira `null`.

O valor de cada célula segue o `type` da coluna:

| `type` da coluna                   | `answer` da célula                                     |
| ---------------------------------- | ------------------------------------------------------ |
| `short_text`, `long_text`, `email` | String                                                 |
| `number`                           | Número                                                 |
| `currency`                         | Número                                                 |
| `date`                             | `AAAA-MM-DD`                                           |
| `date_and_time`                    | `AAAA-MM-DDTHH:mm`                                     |
| `time`                             | `HH:mm`                                                |
| `phone`                            | E.164, como `+5511987654321`                           |
| `select`, `radio`                  | Texto de uma opção                                     |
| `checkbox`                         | Array de opções                                        |
| `link`                             | Array de URLs. Sem `is_multiple`, um array com um item |

Chave de linha ou de coluna que não existe no campo é recusada.

Na leitura, o mesmo campo também devolve `answer_markdown`: uma tabela com os rótulos das linhas e das colunas.

## Datas e horas

O formulário usa o valor nativo do input. Não há máscara brasileira na gravação.

<h3 id="date">
  Data
</h3>

`date`. `AAAA-MM-DD`.

```json theme={null}
"2026-09-23"
```

<h3 id="date_and_time">
  Data e hora
</h3>

`date_and_time`. `AAAA-MM-DDTHH:mm`.

```json theme={null}
"2026-09-23T14:30"
```

<h3 id="time">
  Hora
</h3>

`time`. `HH:mm`.

```json theme={null}
"14:30"
```

## Contato e identificação

<h3 id="email">
  E-mail
</h3>

`email`. String com formato de e-mail.

```json theme={null}
"ana@exemplo.com"
```

<h3 id="phone">
  Telefone
</h3>

`phone`. O formulário grava E.164, com `+` e código do país. A API aceita qualquer número interpretável — com `+`, ou nacional do Brasil sem `+` — e converte para E.164 antes de gravar.

```json theme={null}
"+5511987654321"
```

Texto preenchido que não é um telefone é recusado.

<h3 id="link">
  Link
</h3>

`link`. Array de URLs absolutas. Uma string JSON desse array também é aceita. Uma URL sozinha, fora do array, é recusada — no campo e na célula de uma coluna `link`.

```json theme={null}
["https://olie.ai"]
```

```json theme={null}
["https://olie.ai", "https://docs.olie.ai"]
```

Com `is_multiple` desligado, envie um array com um item. Com `is_multiple: true`, o array pode ter vários.

## Registros da plataforma

O `id` é o identificador do registro na API. `name` é o nome exibido. A resposta é sempre uma lista de objetos.

Estes quatro tipos não funcionam em publicação de formulário. Ver [Os tipos de campo](/guides/forms/forms-api#os-tipos-de-campo).

<h3 id="user">
  Usuário
</h3>

`user`.

```json theme={null}
[
  { "id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", "name": "Ana Souza" }
]
```

<h3 id="contact">
  Contato
</h3>

`contact`.

```json theme={null}
[
  { "id": 42, "name": "Carlos Lima" }
]
```

<h3 id="customer">
  Cliente
</h3>

`customer`.

```json theme={null}
[
  { "id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", "name": "Oficina Norte" }
]
```

<h3 id="project">
  Projeto
</h3>

`project`.

```json theme={null}
[
  {
    "id": "01a05e04-a29c-73e3-9e5b-a9df981974df",
    "name": "Implantação",
    "code": "IMP-14"
  }
]
```

## Arquivos

<h3 id="attachment">
  Anexo(s)
</h3>

`attachment`. Array de objetos de arquivo. O arquivo sobe antes, em outro endpoint; o objeto devolvido é o item da lista. O passo a passo está em [Anexos em resposta de formulário](/guides/forms/attachments).

```json theme={null}
[
  {
    "id": "qWt3nFh9Jk1LpR8sXc2VbN5mZa7dYe0T",
    "name": "contrato-assinado.pdf",
    "url": "https://...",
    "size": 284719,
    "extension": "pdf",
    "file_id": "qWt3nFh9Jk1LpR8sXc2VbN5mZa7dYe0T",
    "created_at": "2026-09-22T14:02:11.000000Z"
  }
]
```

Mais de um arquivo no mesmo campo exige `is_multiple: true` na definição dele.
