POST /v1/quotes carries a top-level signature: an EIP-712 signature by the address published as quoteSigner on the source chain’s entry in GET /v1/chains. Verification is one hash and one signature recovery, with no API key and no extra call. With options.allQuotes, each entry in quotes carries its own signature.
What is signed
An intent hash already commits to the route, reward, recipient, and amounts, so changing any of them changes the hash and breaks the signature. The funding calldata is intentionally outside the signature. The source chain lives in the domain, so a signature for a Base quote does not verify as an OP Mainnet quote.
Verify
chainId differs.
What a match proves
A matching signer proves the quote was issued by Eco, names exactly those intents, and has not been altered or extended pastexpiresAt. It does not prove the price is the best available, and it does not cover the bytes of execution.transaction.
Read quoteSigner from GET /v1/chains and cache it with a refresh rather than pinning it in code. The published signer can rotate.