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

# Consumo diário

> Quanto a sua conta gastou por dia, agrupado por tipo de mensagem, com o período, o fuso e cada campo explicados com exemplos.

# Consumo diário

Responde à pergunta **"quanto eu gastei em cada dia, e com qual tipo de mensagem?"**. O valor já vem somado por dia e
por tipo, para a **conta inteira** (todos os canais): você não precisa paginar nem somar lançamentos.

```bash theme={null}
curl "https://api-dev.messagefy.io/api/v1/billing/Usage/Daily?from=2026-10-01&to=2026-10-31" \
  -H "API-KEY: acc_..."
```

## Parâmetros

**from** `date` *required*

**Primeiro dia** do período. Ele **entra** no resultado.

* Formato: só a data, `yyyy-MM-dd` (ex.: `2026-10-01`). Não envie hora: `2026-10-01T00:00:00Z` é recusado com `400`.
* O dia é contado no **horário de Brasília** (veja "Como o dia é contado", abaixo).

**to** `date` *required*

**Último dia** do período. Ele também **entra** no resultado.

* Mesmo formato do `from`: `yyyy-MM-dd`, sem hora.
* Precisa ser igual ou posterior ao `from`. Para um dia só, repita a data: `from=2026-10-14&to=2026-10-14`.
* No máximo **92 dias** no período, contando o `from` e o `to`. Para mais tempo, faça uma chamada por trecho.
* Pode ser um dia futuro: os dias que ainda não aconteceram simplesmente não aparecem.

**type** `string`

Opcional. Traz só os tipos de mensagem que você pedir, com o código da tabela **Tipos de mensagem**, no fim desta
página (ex.: `meta-marketing`).

* Um tipo: `type=meta-marketing`.
* Vários: repita o parâmetro, `type=meta-marketing&type=meta-utility`.
* Sem `type`: todos os tipos.

**currency** `string` (default: BRL)

Moeda (ISO 4217). Outro formato é recusado com `400`.

**accountId** `uuid`

Só para chaves `org_`: a conta a consultar. Com chave `acc_`, a conta vem da chave.

## Exemplos de período

| Quero ver | `from` | `to` | Dias no período |
| - | - | - | - |
| Só o dia 14 de outubro | `2026-10-14` | `2026-10-14` | 1 |
| A semana de 12 a 18 de outubro | `2026-10-12` | `2026-10-18` | 7 |
| Outubro inteiro | `2026-10-01` | `2026-10-31` | 31 |
| Fevereiro inteiro | `2026-02-01` | `2026-02-28` | 28 |
| O maior período aceito | `2026-07-15` | `2026-10-14` | 92 |
| Período recusado (`400`) | `2026-07-14` | `2026-10-14` | 93: acima do limite |
| Período recusado (`400`) | `2026-10-14` | `2026-10-01` | `to` antes do `from` |

> [!WARNING]
>
> `from` e `to` são **dias** no horário de Brasília, e o `to` **entra** no resultado: para outubro inteiro, use
> `to=2026-10-31`, e não `2026-11-01`.

## Como o dia é contado

O dia vai da **00:00 às 23:59 no horário de Brasília**, e cada mensagem entra no dia em que **foi enviada**, nesse
horário. O fuso usado vem sempre no campo `timeZone` da resposta.

| Mensagem enviada em (UTC) | No horário de Brasília | Aparece no dia |
| - | - | - |
| `2026-10-14T13:00:00Z` | 14/10 às 10:00 | `2026-10-14` |
| `2026-10-15T02:30:00Z` | 14/10 às 23:30 | `2026-10-14` (e **não** no dia 15) |
| `2026-10-15T03:00:00Z` | 15/10 às 00:00 | `2026-10-15` |

Se a sua aplicação trabalha em UTC, converta para o horário de Brasília antes de comparar com o `date` da resposta.

## Resposta

Para `from=2026-10-13&to=2026-10-14`:

```json theme={null}
{
  "account": { "id": "11111111-1111-1111-1111-111111111111" },
  "currency": "BRL",
  "timeZone": "America/Sao_Paulo",
  "from": "2026-10-13",
  "to": "2026-10-14",
  "days": [
    {
      "date": "2026-10-14",
      "total": 0.5222,
      "items": [
        { "type": "meta-marketing", "quantity": 1, "amount": 0.3717 },
        { "type": "meta-utility", "quantity": 3, "amount": 0.1455 },
        { "type": "inbound", "quantity": 1, "amount": 0.0050 }
      ]
    },
    {
      "date": "2026-10-13",
      "total": 0.3717,
      "items": [
        { "type": "meta-marketing", "quantity": 1, "amount": 0.3717 }
      ]
    }
  ]
}
```

Lendo esse exemplo: no dia 14 a conta gastou \*\*R$ 0,5222**, sendo 1 mensagem de marketing (R$ 0,3717), 3 de
utilidade (R$ 0,1455 no total, não cada uma) e 1 mensagem recebida (R$ 0,0050). No dia 13, 1 mensagem de marketing.

## Campos da resposta

| Campo | O que é | Exemplo |
| - | - | - |
| `account.id` | A sua conta | `11111111-...` |
| `currency` | Moeda de todos os valores da resposta (ISO 4217) | `BRL` = reais |
| `timeZone` | Fuso em que os dias foram contados | `America/Sao_Paulo` = horário de Brasília |
| `from` / `to` | O período pedido, repetido como você enviou | `2026-10-13` / `2026-10-14` |
| `days` | Um item por dia **que teve consumo**, do mais recente para o mais antigo. Dia sem nenhuma mensagem cobrada não aparece; sem consumo no período inteiro, vem `[]` | 2 itens: dia 14, depois dia 13 |
| `days[].date` | O dia (`yyyy-MM-dd`, horário de Brasília) | `2026-10-14` |
| `days[].total` | Quanto foi cobrado no dia: a soma dos `amount` dos `items` daquele dia | `0.5222` = R\$ 0,5222 |
| `days[].items` | Um item por tipo de mensagem cobrado no dia, do maior valor para o menor | 3 itens no dia 14 |
| `items[].type` | O tipo de mensagem: o código da tabela **Tipos de mensagem**, no fim desta página | `meta-utility` = utilidade |
| `items[].quantity` | Quantas mensagens desse tipo foram cobradas no dia | `3` |
| `items[].amount` | O valor **somado** dessas mensagens no dia (não é o preço unitário) | `0.1455` para as 3 juntas |

Os valores têm até 4 casas decimais (ex.: `0.3717` = R\$ 0,3717). Para exibir em reais, arredonde só na tela.

Com o filtro `type`, os `items` trazem só os tipos pedidos, e o `total` de cada dia passa a ser a soma **desses**
tipos. Por exemplo, com `type=meta-marketing` o dia 14 do exemplo viria com `total: 0.3717` e um item só.

## Estornos e ajustes

O consumo mostra o valor **final** de cada mensagem, sempre no dia em que ela foi **enviada**, mesmo que a correção
chegue dias depois. Por isso, um dia já consultado pode mudar.

**Estorno** (a Meta não entregou a mensagem): a mensagem sai da contagem e o valor dela sai do total.

| | Dia 14, utilidade |
| - | - |
| Antes do estorno | `quantity: 3`, `amount: 0.1455` |
| Depois do estorno de uma delas | `quantity: 2`, `amount: 0.0970` |

**Ajuste de categoria** (a Meta cobrou outra categoria): a mensagem muda de tipo, com o preço do tipo novo. Ela nunca
aparece nos dois tipos ao mesmo tempo.

| | Dia 14, utilidade | Dia 14, marketing |
| - | - | - |
| Antes do ajuste | `quantity: 3`, `amount: 0.1455` | `quantity: 1`, `amount: 0.3717` |
| Uma mensagem de utilidade passa a marketing | `quantity: 2`, `amount: 0.0970` | `quantity: 2`, `amount: 0.7434` |

Cada estorno e cada ajuste também aparece nos [lançamentos](https://docs.messagefy.io/cobrancas/lancamentos.md), com a data em que foi lançado.

## Erros mais comuns

| O que aconteceu | Resposta | Como corrigir |
| - | - | - |
| Faltou o `from` ou o `to` | `400` com `errorCode` `STATEMENT_RANGE_INVALID` | Envie os dois |
| `to` antes do `from` | `400` com `errorCode` `STATEMENT_RANGE_INVALID` | Troque as datas |
| Período acima de 92 dias | `400` com `errorCode` `STATEMENT_RANGE_INVALID` | Divida em chamadas de até 92 dias |
| Data com hora (`2026-10-14T00:00:00Z`) ou em outro formato (`14/10/2026`) | `400` | Envie só `yyyy-MM-dd` |
| `currency` fora do formato ISO 4217 | `400` com `errorCode` `CURRENCY_INVALID` | Use `BRL`, `USD`... |
| Chave `org_` com `accountId` de outra *Organization* | `404` com `errorCode` `ACCOUNT_NOT_FOUND` | Confira o `accountId` |

Exemplo de `400`:

```json theme={null}
{
  "statusCode": 400,
  "message": "Validation failed",
  "errors": [
    {
      "propertyName": "To",
      "message": "O intervalo pode ter no máximo 92 dias.",
      "errorCode": "STATEMENT_RANGE_INVALID"
    }
  ]
}
```

Decida pelo `errorCode`, não pelo texto de `message`, que pode mudar.

## Tipos de mensagem

| `type` | Tipo de mensagem |
| - | - |
| `meta-marketing` | Marketing |
| `meta-utility` | Utilidade |
| `meta-authentication` | Autenticação |
| `meta-service` | Atendimento |
| `meta-free` | Gratuita |
| `inbound` | Mensagem recebida |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.