ApprovalsApproval request feed

Approval request feed

Approval requests visible to me (initiator / approver / admin). Filters: ?status=PENDING|APPROVED|REJECTED|CANCELLED, ?action=, ?mine=true (I'm the initiator), ?pendingMine=true (awaiting MY vote), ?from/?to (createdAt), ?resolvedFrom/?resolvedTo, ?initiatorId=, ?approverId=, ?decisionPolicyId=, ?targetType=.

Each item is enriched (§21.1): initiator (card). TRANSFER requests (targetType=transfer) include a transfer block: amount (raw + amountDecimal), asset, recipient, status, txHash, source address. It exists so that the approvals feed can be built from a SINGLE source: before it, the amount lived only in Transaction, and clients kept a second stream (transfers from /history) just for the amount, which made the same transfer show up as TWO pending items. For other actions it's null. The full transfer card is still available via GET /transfers/:id. decisionPolicyName, approvalsCount/rejectsCount, firstVoteAt/lastVoteAt, resolutionDurationSeconds.

curl -X GET "https://policy-engine-rest.ezig.workers.dev/api/v1/vaults/demo_vault/approval-requests?status=PENDING&action=example_string&mine=true&pendingMine=true&from=example_string&to=example_string&resolvedFrom=example_string&resolvedTo=example_string&initiatorId=example_string&approverId=example_string&decisionPolicyId=example_string&targetType=example_string&limit=42&cursor=example_string" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "items": [
    {
      "id": "cmr3f41z20001psp7phmyapw3",
      "vaultId": "example_string",
      "action": "example_string",
      "status": "example_string",
      "initiatorId": "example_string",
      "targetType": "example_string",
      "targetId": "example_string",
      "baseVersion": "example_string",
      "payload": "null",
      "decisionPolicyId": "example_string",
      "decisionPolicyCode": "example_string",
      "approvalThreshold": 42,
      "resolvedResultId": "example_string",
      "resolvedAt": "2026-07-02T11:25:15.134000Z",
      "createdAt": "2026-07-02T11:25:15.134000Z",
      "updatedAt": "2026-07-02T11:25:15.134000Z",
      "_count": {
        "approvers": 42
      },
      "initiator": {
        "id": "example_string",
        "name": "John Doe",
        "email": "user@example.com",
        "username": "John Doe",
        "image": "example_string",
        "color": "#000",
        "emoji": "🦊"
      },
      "decisionPolicyName": "John Doe",
      "approvalsCount": 10,
      "rejectsCount": 10,
      "firstVoteAt": "2026-07-02T11:25:15.134000Z",
      "lastVoteAt": "2026-07-02T11:25:15.134000Z",
      "resolutionDurationSeconds": 42
    }
  ],
  "nextCursor": "example_string"
}
GET
/api/v1/vaults/{code}/approval-requests
GET
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

Session token. Mobile/services. The web uses a cookie.

Session token. Mobile/services. The web uses a cookie.
API Key (cookie: session_token)
session_tokenstring
Required

API key (sent in cookie)

path
codestring
Required

Unique Vault code (slug)

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Session token. Mobile/services. The web uses a cookie.

path
parameterstring
Required

API Key for authentication. Provide your API key in the cookie.

Path Parameters

codestring
Required

Unique Vault code (slug)

Example:
demo_vault

Query Parameters

statusstring
Allowed values:PENDINGAPPROVEDREJECTEDCANCELLED
minestring
Allowed values:truefalse
pendingMinestring
Allowed values:truefalse

Responses

itemsarray
Required
nextCursorstring
Required