---
title: "Cria transações em lote (com confirmação)"
method: POST
path: "/api/v1/transactions/batch"
tags: ["Transações", "Escrita e desfazer"]
---

# Cria transações em lote (com confirmação)

`POST /api/v1/transactions/batch`

## Request

- Base URL: `https://snabber.com.br`
- URL: `https://snabber.com.br/api/v1/transactions/batch`
- Auth: HTTP bearer

Até 50 itens, cada um com recorrência opcional. A primeira chamada responde 409 com o preview (como cada item foi entendido, categorias novas, possíveis duplicatas e `quota` consumida da cota mensal) e um token. Repita com `X-Confirmation-Token` (o corpo pode ir vazio): grava exatamente o que o preview mostrou, tudo ou nada.

## Query parameters

- `workspace_id` integer

## Headers

- `X-Confirmation-Token` string
- `Idempotency-Key` string

## Request body

- object
  - `items` TransactionInput[]
    - `date` string, date, required
    - `description` string, required
    - `amount` number, required: Negativo = despesa; positivo = receita
    - `category` string, required
    - `account` string, required: Nome exato de uma conta do workspace
    - `comment` string
    - `paid` boolean: Padrão: true até hoje, false para datas futuras
    - `recurrence` object: Só em /transactions/batch
      - `frequency` 'weekly' | 'monthly' | 'yearly'
      - `count` integer

## Response `201`

Criadas

- CreateTransactionsResult
  - `status` string
  - `replayed` boolean: true quando veio de um Idempotency-Key já usado
  - `undo_id` integer
  - `count` integer
  - `transaction_ids` integer[]
  - `quota_remaining` integer

## Other responses

- `401`: Chave de API ausente, inválida, revogada ou expirada
- `403`: `INSUFFICIENT_SCOPE` (chave sem a permissão de escrita/exclusão), `WORKSPACE_READ_ONLY` (seu papel no workspace é somente leitura) ou `TRANSACTION_QUOTA_EXCEEDED` (cota mensal de transações)
- `409`: Nada foi gravado: a ação precisa de confirmação. O corpo traz `preview` e `confirmation_token`; repita a mesma requisição com o header `X-Confirmation-Token` (vale 5 minutos, uma vez). Também usado para `INVALID_CONFIRMATION`, `STALE_CONFIRMATION` (os dados mudaram desde o preview) e conflitos como duplicata.
- `422`: Dados inválidos (`details.field` diz qual), conta inexistente no workspace (`details.available`), etc.
- `429`: Limite de requisições ou teto diário de escrita da chave (`DAILY_WRITE_LIMIT`)
- `503`: Escrita pela API temporariamente desativada (`WRITES_DISABLED`)

---

[API](https://skmtc.dev/snabber/apis/snabber-api.md) · [All operations](https://skmtc.dev/snabber/apis/snabber-api/llms.txt) · [OpenAPI document](https://skmtc.dev/snabber/apis/snabber-api/revisions/bf5841cbd8ce?raw)
