Endpoint
POST /actions/:actionId/intents/:intentIndex/steps/:stepIndex
Path Parameters
| Parameter | Type | Required | Description |
|---|
actionId | string | Yes | Action ID |
intentIndex | number | Yes | Intent index (0-based) |
stepIndex | number | Yes | Step index (0-based) |
non-7702:presign mode is not yet implemented. Only 7702 and non-7702:on-demand modes are currently functional.
Request Body by Mode
For EIP-7702 intents, simply trigger execution:The solver executes the delegated calls using the stored authorization. This mode exists in schema but execution is not yet implemented.
For presigned transactions:Register hash (store for later):{
"action": "register",
"hash": "0xTransactionHash..."
}
Execute (broadcast stored tx):User sends their own transaction, then notifies the API:Register (store hash only, for logging):{
"action": "register",
"hash": "0xUserSubmittedTxHash..."
}
Execute (verify tx + update balances + trigger solver):{
"action": "execute",
"hash": "0xUserSubmittedTxHash..."
}
Response
Success Response (200)
{
"status": "success",
"transactionHash": "0x..."
}
| Field | Type | Description |
|---|
status | string | Step status after execution |
transactionHash | string | Transaction hash (if applicable) |
Already Processed (202)
If the step is not in created status:
{
"status": "executing"
}
Execution Flow
7702 Mode
- Solver retrieves stored calls and authorization
- Broadcasts transaction with delegated execution
- Updates step status on confirmation
non-7702:on-demand Mode
When action: "execute" with a transaction hash:
- Verify Transaction: Check tx exists on-chain and succeeded
- Replay Prevention: Reject if hash already processed
- Update Balances: Credit user’s Spice balance from token transfers
- Execute Solver Transfers: Send tokens on destination chain(s)
- Auto-Advance: Automatically execute remaining steps (solver transfers)
When action: "register":
- Verify Transaction: Check tx exists and succeeded
- Store Reference: Save hash for tracking, no balance updates
- Status: Set to
registered instead of success
Error Responses
400 Bad Request
{
"error": "schema validation failed",
"issues": { /* Validation details */ }
}
{
"error": "Transaction already processed"
}
{
"error": "Transaction failed or pending"
}
404 Not Found
{
"error": "could not find intent",
"actionId": "act_...",
"intentIndex": 0,
"stepIndex": 0
}
500 Internal Server Error
{
"error": "error executing intent step",
"actionId": "act_...",
"intentIndex": 0,
"stepIndex": 0,
"message": "Error details..."
}
Example Requests
7702 Mode
curl -X POST /actions/act_abc123/intents/0/steps/0 \
-H "Content-Type: application/json" \
-d '{"action": "execute"}'
non-7702:on-demand Mode
# User sends their own transaction first, then:
curl -X POST /actions/act_abc123/intents/0/steps/0 \
-H "Content-Type: application/json" \
-d '{
"action": "execute",
"hash": "0x1234567890abcdef..."
}'
Notes
- Steps must be executed in order (0, 1, 2, …)
- For
non-7702:on-demand, the user is responsible for sending the source chain transaction
- After a successful
execute action, remaining steps (solver transfers on destination chains) are auto-executed