Boss HubBoss HubDocs
ChangelogStatus
Provider API/Transaction feed

Transaction feed

API · Operator → Boss Hub
GET/v1/transactions

Returns the bet, win and rollback transactions sent to your wallet in time order: to reconcile your own wallet ledger transaction by transaction and to get from a transaction ID to its round. You see only your own transactions, in your key’s environment. Requires the rounds.read scope.

Headers

HeaderDescription
X-Operator-IdYour operator ID
X-TimestampUnix seconds. Rejected outside ±30 s
X-Signaturehex(HMAC_SHA256(secret, ts + "." + METHOD + "." + path?query + "." + body))
X-Api-KeyOptional. Selects the right secret when you have several keys

Query parameters

fromdate-timerequired
Start time, inclusive (created_at).
todate-timerequired
End time, exclusive. The range is at most 31 days.
site_idstring
Site code, e.g. site_mrd01, at most 64 characters. With a site key, only your own site.
player_idstring
The player ID on the operator side, at most 100 characters. An unknown player gives an empty page.
round_idstring
Round ID, e.g. rnd_01HF3K9QZ2, at most 64 characters. A malformed ID gives an empty page.
transaction_idstring
The transaction ID from the wallet call, at most 80 characters: to get from a transaction to its round. A malformed ID gives an empty page.
typestring
bet, win, rollback.
cursorstring
The next_cursor value from the previous response.
limitinteger
Page size: 1-1000, default 100.
Pagination: Order is created_at, then transaction_id, ascending. If next_cursor is set, repeat the same query with cursor; null means you are on the last page. Reading a closed range from start to end returns each row once and in order.
Flags: round_closed, is_freeround, campaign_id, jackpot, promo are the values sent to you in the wallet call and do not change later. On a rollback row jackpot and promo come from the reversed transaction; round_closed is false on a rollback. For the round’s current state use round lookup.
GET /v1/transactions?from=2026-11-05T00:00:00Z&to=2026-11-06T00:00:00Z&limit=500 HTTP/1.1
Host: staging.example.com
X-Operator-Id: op_meridyen
X-Timestamp: 1762344000
X-Signature: 3b91d0…7a2c
200Transactions
{
  "items": [
    {
      "transaction_id": "tx_01HF3K9QZ2-b1",
      "round_id": "rnd_01HF3K9QZ2",
      "type": "bet",
      "amount": 2.00,
      "currency": "USD",
      "status": "ok",
      "round_closed": false,
      "is_freeround": false,
      "campaign_id": null,
      "jackpot": null,
      "promo": null,
      "ref_transaction_id": null,
      "operator_tx_id": "op_tx_9921844",
      "player_id": "u_88213",
      "game_id": "sultans-ember",
      "site_id": "site_mrd01",
      "created_at": "2026-11-05T14:22:05Z",
      "completed_at": "2026-11-05T14:22:05Z"
    },
    {
      "transaction_id": "tx_01HF3K9QZ2-w1",
      "round_id": "rnd_01HF3K9QZ2",
      "type": "win",
      "amount": 5.00,
      "currency": "USD",
      "status": "ok",
      "round_closed": true,
      "is_freeround": false,
      "campaign_id": null,
      "jackpot": null,
      "promo": null,
      "ref_transaction_id": null,
      "operator_tx_id": "op_tx_9921845",
      "player_id": "u_88213",
      "game_id": "sultans-ember",
      "site_id": "site_mrd01",
      "created_at": "2026-11-05T14:22:09Z",
      "completed_at": "2026-11-05T14:22:09Z"
    }
  ],
  "next_cursor": "eyJhdCI6IjIwMjYtMTEtMDVUMTQ6MjI6MDkuMDAwWiIsImlkIjoidHhfMDFIRjNLOVFaMi13MSJ9"
}
422Range longer than 31 days
{
  "code": "DATE_RANGE_TOO_LONG",
  "message": "The date range is longer than allowed (at most 366 days for reports, 31 days for the transaction feed).",
  "request_id": "req_01HF3Q2R",
  "details": { "max_days": 31 }
}

Row fields

FieldTypeDescription
transaction_idstringThe transaction ID from the wallet call.
round_idstringRound ID.
typestringbet, win, rollback. Jackpot and promotion credit are win rows.
amountdecimal(18,2)Transaction amount. 0 on a free round bet.
currencyISO 4217Session currency.
statusstringqueued, pending, ok, rejected, ambiguous, reversed, void, manual_ok; same as the transactions in the round detail.
round_closedbooleanWhether the call carried the round close signal.
is_freeroundbooleanFree round transaction.
campaign_idstring | nullFree round campaign.
jackpotobject | nullJackpot win: pool_id (can be null when no pool matches), level. null on other transactions.
promoobject | nullPromotion credit (tournament prize): type, id, rank (integer). null on other transactions.
ref_transaction_idstring | nullOn a rollback, the reversed transaction.
operator_tx_idstring | nullThe transaction ID in your response.
player_idstringThe player ID on the operator side.
game_idstringGame code.
site_idstringSite ID.
created_atdate-timeWhen the transaction was created; order and range read this.
completed_atdate-time | nullWhen the result came back from your wallet; null while pending.

Error codes

CodeHTTPMeaning
INVALID_SIGNATURE401Signature could not be verified
TIMESTAMP_SKEW401X-Timestamp is outside ±30 s
IP_NOT_ALLOWED403IP is not on the allowlist
SCOPE_MISSING403The rounds.read scope is missing
SCOPE_DENIED403site_id is not yours or is outside your key’s scope
VALIDATION_ERROR422from or to is missing, or a query parameter is invalid
DATE_RANGE_INVALID422from is not before to
DATE_RANGE_TOO_LONG422The range is longer than 31 days (details.max_days)
INVALID_CURSOR422cursor does not come from a previous response
RATE_LIMITED429Rate limit exceeded
← PreviousRound lookup & replayNext →Free round campaigns