v2 is in beta and lives under
https://api.redbark.com/v2. v1 keeps working unchanged; see the v1 to v2 mapping.Base URL
https://api.redbark.com/v2/openapi.json. Every operation carries x-redbark-scope (the scope it needs) and x-redbark-tier (its rate-limit tier). The endpoint pages in the sidebar are generated from it and have a playground: paste a key and a Redbark-Version once and every page can make live requests.
Required headers
Shape
- JSON in, JSON out,
snake_caseeverywhere. - Every resource has
object("sync","api_key") and every list has"object": "list". - Ids are prefixed and opaque:
sync_,conn_,acct_,cat_,dest_,run_,key_,ed_,evt_. Provider-issued ids are tagged:txn_fk_...(Fiskil),txn_ak_...(Akahu),txn_st_...(SnapTrade), and likewisehold_st_...andtrd_st_...for brokerage holdings and trades. createdandupdatedare RFC 3339 UTC strings with milliseconds. Provider moments keep the bank’s offset. Local dates areYYYY-MM-DD.- Money is an integer in minor units plus a lowercase ISO 4217
currency:{ "amount": 1250, "currency": "aud" }. - Optional fields are present and
null, never omitted. livemodeis alwaystruetoday.metadataholds up to 50 string pairs (40 character keys, 500 character values) on connections, categories, destinations, syncs, event destinations and keys. Set a key tonullin an update to unset it.
Lists
Lists are newest first and token paginated.limit is 1 to 100 (default 20). The response is:
next_page_url until it is null. The page token encodes the filters the walk started with, so changing a filter while paging is 400 page_filters_changed. Array filters use bracket form: ?status[]=failed&status[]=cancelled. Lists are eventually consistent; a just-created object is immediately retrievable by id.
Include
Heavy or secret fields arenull unless you name them: ?include[]=accounts, ?include[]=latest_run. Each endpoint documents what it can include. An unknown value is 400 include_invalid.
Errors
Every response carries
Request-Id. See the error catalogue.
Idempotency
SendIdempotency-Key (up to 255 characters) on any POST or DELETE. Within 30 days:
- the same key with the same parameters returns the stored response with
Idempotent-Replayed: true; - the same key with different parameters is
409 idempotency_key_reused; - the same key while the first attempt is still running is
409 idempotency_key_in_use; - a failed first attempt is re-executed.
Idempotency-Key response header; nothing is stored. GET ignores the header.
Versioning
Releases are named and dated:2026-10-01.wattle is the first. Additions ship under the current name; a breaking change (removing or renaming a field, changing a type or enum, changing pagination) becomes a new name. Send the release you built against in Redbark-Version; the response echoes it. Event payloads are unversioned.
Rate limits
Applied per key, by tier:cheap 60/min, mid 30/min, heavy 30/min with 4 in flight, mutating 30/min. Headers are X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and Retry-After on 429.
Scopes
Every v2 key is restricted.resource:write implies resource:read. Keys created before scopes existed are legacy keys: they hold every :read scope and nothing else. Create a new key in the dashboard or via POST /v2/api_keys to get write access.
Updates and deletes
Updates arePOST /v2/{resource}/{id} with a partial body (PATCH is accepted as an alias). Deletes return { "id": "...", "object": "...", "deleted": true }.