Once you’ve signed the intent, submit it to the Orchestrator for execution.
Use the /intents endpoint. Pass the intentId from the quote and the signatures you collected:
const baseUrl = "https://v1.orchestrator.rhinestone.dev" ;
const apiKey = process . env . RHINESTONE_API_KEY ;
const res = await fetch ( ` ${ baseUrl } /intents` , {
method: "POST" ,
headers: {
"Content-Type" : "application/json" ,
"x-api-key" : apiKey ,
"x-api-version" : "2026-04.blanc" ,
},
body: JSON . stringify ({
intentId ,
signatures: {
origin: originSignatures ,
destination: destinationSignature ,
},
}),
});
const { intentId : submittedId } = await res . json ();
The response contains only the intentId — use it to poll for execution status.
If the quote has expired before you submit, POST /intents returns 404. Re-quote and re-sign — don’t retry the submit.
Tracking intents Poll for status and understand the full intent lifecycle.