Intent Status
GET /intents/:intentId
Query the execution status of a submitted intent.
Request
bash
curl https://mainnet.relayer.ryze.pro/api/v1/intents/0x9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08Response
json
{
"success": true,
"intent": {
"intentId": "0x9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"status": "confirmed",
"txHash": "0xabc123...",
"batchId": "550e8400-e29b-41d4-a716-446655440000",
"blockNumber": 44700000,
"gasUsed": 185000,
"error": null
}
}Status Values
| Status | Description |
|---|---|
pending | Submitted and queued, waiting for batch execution |
confirmed | Transaction executed and confirmed on-chain |
failed | Execution failed (check error field) |
Fields
| Field | Type | Description |
|---|---|---|
intentId | string | Unique intent identifier (EIP-712 hash) |
status | string | pending, confirmed, or failed |
txHash | string | Transaction hash (available after execution) |
batchId | string | UUID of the batch containing this intent |
blockNumber | number | Block where tx was included |
gasUsed | number | Gas consumed |
error | string | Error message (null if successful) |
Polling Pattern
After submitting an intent, poll for status until it resolves:
javascript
async function waitForIntent(intentId) {
const RELAYER_URL = 'https://mainnet.relayer.ryze.pro/api/v1';
while (true) {
const res = await fetch(`${RELAYER_URL}/intents/${intentId}`);
const data = await res.json();
if (data.intent.status === 'confirmed') {
return data.intent; // { txHash, blockNumber, ... }
}
if (data.intent.status === 'failed') {
throw new Error(data.intent.error);
}
// Still pending, wait and retry
await new Promise(r => setTimeout(r, 2000));
}
}
// Usage
const result = await submitIntent(...);
const confirmed = await waitForIntent(result.intentId);
console.log('Tx hash:', confirmed.txHash);Timing
- Validation: < 100ms
- Queue wait: 0-1 seconds (batch interval)
- On-chain execution: 2-10 seconds (network dependent)
- Total: typically 3-12 seconds from submit to confirmed