CorebanqCorebanq Developer Docs
Transfersv1Transfers

Get transfer status history

Status changes for one transfer, in the shared get_all envelope (GetAllResponseAPI) — data, total, total_unfiltered and keys. The handler runs the same query parser as GET /v1/transfers/statuses and then forces search.transfer_id from the path, overwriting any transfer_id the caller sent. search.transfer_id aside, every parameter that operation takes works here too.

GET
/v1/transfers/{transfer_id}/status-history

Authorization

BearerAuth
AuthorizationBearer <token>

JWT authentication token

In: header

Path Parameters

transfer_id*string

Transfer UUID

transfer_id*string

transfer_id path parameter

Query Parameters

search.status?string

Filter by new status.

search.prev_status?string

Filter by previous status.

search.created_by?string

Filter by creator user ID.

search.internal?string

Filter by internal flag.

stack?string

Stack response data by a field (e.g. stack=status or stack=created_at[YYYY-MM-DD]).

sort?string

Sort field (prefix with - for descending). Example: -created_at.

limit?integer

Number of items per page.

offset?integer

Starting position for pagination.

filter?string

JSON filter object, parsed by the shared parser. Malformed JSON is refused with 400.

search._text?string

Free-text search over the virtual full-row text expression, resolved by the shared parser's ExtractTextSearch. Bare search._text implies the like operator; the operator suffixes accepted are .eq, .like, .ilike, .contains, .start_with and .end_with. More than one of them in a single request is refused with 400, as is any other suffix.

Header Parameters

Accept-Language?string

Language preference for the response

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/transfers/string/status-history"
{
  "data": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "transfer_id": "d4a2d8dd-7def-4545-a062-761683b9aa05",
      "created_at": "2019-08-24T14:15:22Z",
      "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
      "prev_status": "string",
      "status": "string",
      "internal": true
    }
  ],
  "total": 0,
  "total_unfiltered": 0,
  "has_more": true,
  "keys": [
    "string"
  ]
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}
{
  "status": 429,
  "message": "Rate limit exceeded",
  "code": "rate_limits_m.exceeded",
  "class": "temporary",
  "retryable": true
}
{
  "status": 0,
  "message": "string",
  "code": "transfers_m.account_not_found",
  "class": "validation",
  "retryable": false,
  "details": [
    {
      "field": "amount",
      "rule": "gt",
      "param": "0",
      "message": "amount must be greater than 0"
    }
  ]
}

{
  "overall_status": "unhealthy",
  "message": "Service is shutting down",
  "timestamp": "2026-08-27T15:04:05Z"
}