Transaction Series
How many transactions fell in each hour, day, week or month of a window, cut in your time zone, with every bucket present, quiet ones included. The same transactions Transaction Stats counts, given a shape: the buckets sum to its count.
New in v3: v2 has no equivalent.
Authorization:
Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.
Headers:
Authorization: APIKey {SIGNED_JWT}
How to build and sign the JWT: Authentication.
Endpoint
/v3/transactions/series
Query parameters
| Parameter | Type | Description |
|---|---|---|
from | string (date-time) | Required. Start of the window, inclusive. RFC 3339 with an offset. |
to | string (date-time) | Required. End of the window, exclusive. At most 366 days after from. |
interval | string | Required, no default. The bucket width: hour, day, week or month. |
tz | string | Required. The IANA time zone the buckets are cut in, e.g. America/Argentina/Buenos_Aires. A fixed offset such as -03:00 is refused: it cannot say when daylight saving starts or ends. |
transaction_type | string | Only one type: trade, crypto, bank or platform_fee. Absent counts every type. |
status | string | Only one status, matched exactly as stored. Absent counts every status. |
How the window is cut:
- Buckets follow the calendar of
tz: adaystarts at local midnight, aweekon Monday, amonthon the 1st. Across a daylight-saving change a day is 23 or 25 hours long, never shifted. - The first bucket is the one that contains
from, so it can start beforefrom. Only transactions inside[from, to)are counted. - At most 1,000 buckets:
hourover more than about 41 days is refused. Widenintervalor narrow the window.
Who the series covers is decided as for Transaction Stats: a workspace-scoped key gets the whole workspace, an account-scoped key its own account.
Response Sample
GET /v3/transactions/series?from=2026-08-06T00:00:00-03:00&to=2026-08-09T00:00:00-03:00&interval=day&tz=America/Argentina/Buenos_Aires
{
"from": "2026-08-06T03:00:00Z",
"to": "2026-08-09T03:00:00Z",
"interval": "day",
"tz": "America/Argentina/Buenos_Aires",
"buckets": [
{ "at": "2026-08-06T03:00:00Z", "count": 28 },
{ "at": "2026-08-07T03:00:00Z", "count": 0 },
{ "at": "2026-08-08T03:00:00Z", "count": 32 }
],
"summary": {
"total": 60,
"avg_count": 20,
"peak_at": "2026-08-08T03:00:00Z"
}
}
Response Schema
| Field | Type | Description |
|---|---|---|
from / to | string (date-time) | The window counted, echoed back in UTC. |
interval | string | The bucket width, echoed back. |
tz | string | The zone the buckets were cut in, echoed back. |
buckets | array | Every bucket the window covers, oldest first, including those with a count of 0. |
buckets[].at | string (date-time) | The bucket's first instant, in UTC. Local midnight in Buenos Aires is 03:00:00Z: convert to tz to label it. |
buckets[].count | integer | How many transactions fell in the bucket. |
summary.total | integer | The sum of every bucket. |
summary.avg_count | number | The mean per bucket, over every bucket, quiet ones included. Not rounded. |
summary.peak_at | string (date-time) | The start of the busiest bucket; on a tie, the earliest. Absent when the window holds no transactions. |
Errors
| Status | message | When |
|---|---|---|
400 | failed to parse request | from or to is not a timestamp, or transaction_type is not one of the types above. |
400 | window_incomplete | from or to is missing. |
400 | window_inverted | to is not after from. |
400 | window_too_wide | The window is longer than 366 days. |
400 | interval_unknown | interval is not hour, day, week or month. |
400 | timezone_unknown | tz is not an IANA zone name, for example a fixed offset. |
400 | too_many_buckets | The window holds more than 1,000 buckets of interval. |
401 | unauthorized | Missing or invalid signature. |
403 | forbidden | An account-scoped key named another account in account_id. |
422 | Validation failed | interval or tz is missing; details names it. |
Support and Resources
If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.
Stay Updated
Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:
- Instagram: BlockWyre Instagram
- Twitter: BlockWyre Twitter
- Facebook: BlockWyre Facebook
- LinkedIn: BlockWyre LinkedIn
We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!