Query transaction status
GET /v1/transactions/{id} — reconcile processing with the chain outcome.
/v1/transactions/{id}Retrieve a submission using the opaque ID returned by the submission endpoint. In this design, records are scoped to the integration key. An unknown or inaccessible ID returns 404 transaction_not_found.
Request
curl 'https://api.mokuna.xyz/v1/transactions/mtx_example_001' \
--header "Authorization: Bearer $MOKUNA_API_KEY"
200 OK
{
"id": "mtx_example_001",
"network": "base",
"status": "included",
"transactionHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
"clientReference": "order-example-001",
"receivedAt": "2026-09-20T08:00:00Z",
"updatedAt": "2026-09-20T08:00:04Z",
"inclusion": {
"blockNumber": "12345678",
"blockHash": "0x2222222222222222222222222222222222222222222222222222222222222222",
"executionStatus": "success"
},
"failure": null,
"requestId": "req_example_002"
}
Before inclusion, inclusion is null. For rejected or expired submissions, failure contains a code and a human-readable message. No captured-revenue figure is implied by an inclusion response.
Processing states
| State | Meaning | Next action |
|---|---|---|
received | Accepted for processing. | Continue tracking. |
processing | The engine is evaluating the flow. | Continue tracking. |
submitted | Execution has been submitted toward the chain. | Continue tracking; this is not inclusion. |
included | Observed in a block. | Check executionStatus and your finality policy. |
rejected | Not proceeding because of a validation or processing failure. | Review failure.code; do not blindly retry. |
expired | The processing window ended without observed inclusion. | Reconcile chain state before replacement or resubmission. |
inclusion.executionStatus is success or reverted. Inclusion is not synonymous with successful execution. The rejection and expiry states are terminal for this submission record; they do not prove that the same transaction was never submitted through another route.
Polling guidance
For this preview design, start with a two-second polling interval and increase it with jitter for longer waits. Respect Retry-After on rate-limit responses, use a bounded timeout and stop normal polling when an outcome is reached.
An included result is an observation, not a finality guarantee. After a chain reorganization the record may return to submitted with inclusion: null. Continue chain confirmation checks according to your product’s policy.
Separate transaction tracking from accounting
The v1 preview does not define revenue reporting, cancellation, replacement or webhook endpoints. Coordinate these workflows separately; do not infer support from another provider’s API.