Statements Summary
A referência da API está em inglês. Os guias, a autenticação, os webhooks e os códigos de erro estão em português.
Returns counts and aggregated amounts of the same movements List Statements returns, grouped by balance (currency).
Only balances, directions and types with records in the period are included in the response. Without dates, the last 30 days are summarised; the widest range accepted is 90 days (inclusive). total_amount is a string with 8 decimals. With no records in the period, by_balance is an empty array ([]), not an object. Data can be up to 5 minutes old.
https://bridge.bifrostcrypto.com/v1/statements/summarystatements:read(chave nova sem lista é somente leitura)Headers
| Key | Value | Description |
|---|---|---|
X-Bifrost-Invoke | {{api_key}} | Private API key |
Query Parameters
| Parameter | Example | Description |
|---|---|---|
date_from | 2026-01-01 | Start date of the period (inclusive). Format: YYYY-MM-DD. Omitted, it is 29 days before date_to (a 30-day inclusive window). Read in UTC−03:00. |
date_to | 2026-03-31 | End date of the period (inclusive). Format: YYYY-MM-DD. Omitted, it is today when date_from is also omitted, otherwise date_from + 29 days. Read in UTC−03:00. |
cURL Example
curl -X GET "https://bridge.bifrostcrypto.com/v1/statements/summary?date_from=2026-01-01&date_to=2026-03-31" \
-H "X-Bifrost-Invoke: YOUR_API_KEY"Response Example
{
"message": "statement_summary_retrieved_success",
"filters": {
"date_from": "2026-01-01",
"date_to": "2026-03-31"
},
"summary": {
"by_balance": {
"balance_bitcoin": {
"total_count": 16,
"by_direction": {
"in": {
"count": 12,
"total_amount": "0.05000000"
},
"out": {
"count": 4,
"total_amount": "0.02000000"
}
},
"by_type": {
"DEPOSIT": {
"count": 10,
"total_amount": "0.04000000"
},
"WITHDRAWAL": {
"count": 4,
"total_amount": "0.02000000"
},
"FEE": {
"count": 1,
"total_amount": "0.00100000"
},
"RATE": {
"count": 1,
"total_amount": "0.00050000"
}
}
},
"balance_ethereum": {
"total_count": 8,
"by_direction": {
"in": {
"count": 5,
"total_amount": "1.20000000"
},
"out": {
"count": 3,
"total_amount": "0.50000000"
}
},
"by_type": {
"DEPOSIT": {
"count": 5,
"total_amount": "1.20000000"
},
"WITHDRAWAL": {
"count": 3,
"total_amount": "0.50000000"
}
}
}
},
"totals": {
"total_statements": 24,
"balances_used": [
"balance_bitcoin",
"balance_ethereum"
]
}
}
}Errors
Every error has the shape error.code, error.message and, when useful, error.details. Authentication, scope and rate-limit errors (401, 403, 429) apply to every endpoint and are described under Authentication.
| Status | Code | When | What to do |
|---|---|---|---|
| 400 | invalid_format | A date is not YYYY-MM-DD; details.field names it. | Fix the request before sending it again. |
| 400 | invalid_date_range | date_from is after date_to. | Fix the request before sending it again. |
| 400 | date_range_too_wide | The window is longer than details.max_days (90). | Query the period in smaller windows. |
| 500 | database_error | The query failed. | Nothing was changed. Retry later. |
Outras respostas
Respostas que não são o caminho feliz e ainda assim precisam de tratamento na sua integração.
Called without dates
filters always reports the window that was actually used, and date_range_defaulted marks that you did not choose it. Read those fields instead of assuming the period covers your whole history.
{
"message": "statement_summary_retrieved_success",
"filters": {
"date_from": "2026-08-13",
"date_to": "2026-09-11",
"date_range_defaulted": true
},
"summary": {
"...": "..."
}
}Date range too wide
Ask for a window longer than max_days and the request is refused rather than served slowly. Other 400 codes: invalid_format (date not in YYYY-MM-DD; details.field) and invalid_date_range (date_from after date_to). A database failure answers 500 database_error.
{
"error": {
"code": "date_range_too_wide",
"message": "The requested date range exceeds the maximum allowed",
"details": {
"max_days": 90
}
}
}