GraphQL
Read the same escrow data with field selection over a single POST endpoint.
The same escrow data available over REST is also queryable through a single GraphQL endpoint, with the same authentication, the same roles, and the same visibility rules.
Headers
Content-Type
application/json
x-api-key
<token>
Open API
POST /graphql
Always POST, always the same path — including for queries.
When to use it instead of REST
Use GraphQL when a screen needs several related things at once. Over REST, an escrow detail view with milestones, financials and recent events is four requests. In GraphQL it is one, returning only the fields you name.
Use REST when you want one specific thing, or when a simple cache layer matters more than round trips.
Queries
escrows(filters…)
A paginated EscrowPage
escrow(contractId)
A single escrow
ping
Liveness check
The filter vocabulary matches GET /escrows exactly, and the page envelope is the same { data, hasMore, nextCursor }.
What this Endpoint returns?
A standard GraphQL envelope. Note the error behaviour:
GraphQL always returns HTTP 200, even on failure. Check body.errors before reading body.data. The extensions.code values are the same vocabulary as REST Problem Details.
Limits
Maximum query depth
8
Maximum complexity
1000 fields
Introspection
Disabled in production
Mutations
None — GraphQL is read-only. Every write stays on REST.
Use Example:
Listing with pagination
The same cursor rules as REST apply: keep the sort and order stable while paging.