What onboarding produces
Quoting RFQs is a provisioned role; no API call enables it.
The wallet key is the credential; there are no API keys. The quoter role is bound to that wallet, so binding a new key goes through Joyride.
Readiness checklist
Run these four checks in order on one authenticated WebSocket session. Each depends on the one before it. Request and response frames are on Connectivity for Bots and Quoting RFQs.- Role.
public/authreturnsrolescontainingrfq_quoter. An empty list means the account exists without the role, and everyrfq.maker.*method returnsRFQ_WRONG_ROLE. - Subscription.
rfq.maker.subscribereturnssubscribed: true. - Subaccount.
GET /api/query/vault-subaccount, with the session token as bearer, returns one row for the account. - Readiness.
rfq.maker.pollreturns a page instead ofRFQ_NOT_READY.
Reading RFQ_NOT_READY
RFQ_NOT_READY is one error code with five causes, told apart by the message field. All five are retryable: true, but only two clear on their own.
retryable: true means the request was well formed and may succeed later. For the three Joyride-owned causes, a retry alone will not clear it. Email support@joyride.exchange if one of those persists.
Obligations
- A delivered quote is firm until its
expires_at, with no cancel and no replace. Choose a TTL that hedging can honor, since the quote stands even if prices move. - Never call the vault’s
cancel_noncefor a nonce once its RFQ isaccepted. - Reconcile from durable history:
GET /api/query/rfq-fills?role=makeris the record of fills, and open requests are purged at settlement.