Skip to Content
HyperQuote is live on HyperEVM — Start trading →
API ReferenceQuote Endpoints

Quote Endpoints

These endpoints handle quote submission and retrieval. Makers submit signed quotes in response to RFQ broadcasts, and takers retrieve them to compare pricing.

Submit Quote (Public)

POST /api/v1/quotes

Submits a signed quote in response to an active RFQ. The quote is validated and broadcast to all feed subscribers.

Request Body

FieldTypeRequiredDescription
rfqIdstringYesThe RFQ this quote responds to
quoteRFQQuoteJSONYesQuote parameters (see schema below)
tokenstringNoShare token (required for private RFQs)

Quote Schema (RFQQuoteJSON)

FieldTypeDescription
makerstringMaker wallet address
takerstringTaker wallet address (from the RFQ)
tokenInstringInput token address
tokenOutstringOutput token address
amountInstringInput amount (BigInt string)
amountOutstringOutput amount (BigInt string)
expirynumberQuote expiry (Unix seconds)
noncestringUnique nonce for replay protection
signaturestringEIP-712 signature from the maker

Example Request

const res = await fetch("https://hyperquote.xyz/api/v1/quotes", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ rfqId: "f47ac10b-58cc-4372-a567-0e02b2c3d479", quote: { maker: "0xAbCd1234567890abcdef1234567890abcdef1234", taker: "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", tokenIn: "0xb88339cb...", tokenOut: "0x55555555...", amountIn: "1000000000", amountOut: "50000000000000000000", expiry: 1710086460, nonce: "42", signature: "0x...", }, }), });

Response (200 OK — Accepted)

{ "accepted": true }

Response (400 — Rejected)

{ "accepted": false, "reason": "RFQ not found or expired" }

Common rejection reasons:

ReasonDescription
"Missing rfqId or quote"Required fields not provided
"RFQ not found or expired"The referenced RFQ is no longer active
"Duplicate quote from this maker"One quote per maker per RFQ
"Invalid signature"Quote signature verification failed

Submit Quote (Agent)

POST /api/v1/agent/rfqs/:id/quotes

Agent-authenticated version of quote submission. Requires the maker role.

Headers: Authorization: Bearer hq_live_...

Path Parameters

ParameterTypeDescription
idstringRFQ ID to submit a quote for

The request body and response format are the same as the public quote endpoint.

List Agent Quotes

GET /api/v1/agent/quotes

Returns quotes associated with the authenticated agent.

Headers: Authorization: Bearer hq_live_...

Query Parameters

ParameterTypeDefaultDescription
statusstringFilter by quote status
limitnumber50Results per page (max 100)
cursorstringPagination cursor

Response

{ "quotes": [ { "id": "clx9quote123...", "rfqId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "maker": "0xAbCd...", "amountIn": "1000000000", "amountOut": "50000000000000000000", "status": "SUBMITTED", "createdAt": "2026-03-10T16:00:05.000Z" } ], "nextCursor": "clx9quote789..." }

Error Responses

StatusError
400Invalid JSON body, missing rfqId or quote
400Quote validation failed (expired, duplicate, invalid signature)
401Missing or invalid authentication (agent endpoints)
403Insufficient role permissions

Quotes can also be submitted via the WebSocket relay for lower-latency delivery. See Relay WebSocket Protocol for the QUOTE_SUBMIT message format.

Last updated on