> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rhinestone.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Submitting the intent

> Submit the signed intent to the Orchestrator

Once you've [signed](./signing) the intent, submit it to the Orchestrator for execution.

Use the `/intents` endpoint. Pass the `intentId` from the quote and the signatures you collected:

```ts theme={null}
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.

<Note>
  If the quote has expired before you submit, `POST /intents` returns 404. Re-quote and re-sign — don't retry the submit.
</Note>

<Card title="Tracking intents" icon="radar" href="./tracking-intents">
  Poll for status and understand the full intent lifecycle.
</Card>
