{"openapi":"3.1.0","info":{"title":"Sidelot Solana beta API","version":"1.2.0","description":"This v1 API serves the existing Solana beta. Robinhood Chain has a separate deployment and API namespace at /api/robinhood; check /api/robinhood/config before using it. Public beta. Discover markets, check original SPL and supported Token-2022 mints, prepare wallet-approved market registrations and wallet-held buy/sell offer listings or cancellations. No API key required. No transfers, settlement signatures, escrow deposits or automated trading. Trading UI remains public beta. Owner signs each exact action message. Never send seed phrases or private keys. Market creation requires launch-password access for both prepare and commit, plus wallet approval. Unlock at /launch and retain the HttpOnly session cookie. Public reads and wallet-approved offer posting/cancellation do not require launch access.","contact":{"name":"@SidelotOTC","url":"https://x.com/SidelotOTC"}},"servers":[{"url":"https://usesidelot.com/api/v1"}],"paths":{"/markets":{"get":{"operationId":"listMarkets","summary":"List public market records","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"markets":{"type":"array","items":{"$ref":"#/components/schemas/Market"}},"nextOffset":{"type":["integer","null"]}}}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}]}},"/markets/{id}":{"get":{"operationId":"getMarket","summary":"Read a market record and its URL","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitResponse"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/markets/prepare":{"post":{"operationId":"prepareMarketLaunch","summary":"Validate a market and prepare an owner-reviewed signing challenge","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid"},"message":{"type":"string"},"messageEncoding":{"const":"utf-8"},"signatureEncoding":{"const":"base64"},"expiresAt":{"type":"integer","description":"Unix timestamp in milliseconds; valid for five minutes."},"market":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":60},"symbol":{"type":"string","minLength":1,"maxLength":16},"mint":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"type":{"type":"string","enum":["solo","community"]},"role":{"type":"string","enum":["holder","team"],"default":"holder"},"description":{"type":"string","maxLength":500},"feeWallet":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"On-curve wallet receiving the market share. Owner must review this address."},"website":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"social":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"chat":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"picture":{"type":"string","description":"Optional image upload ID already owned by the signing wallet."},"banner":{"type":"string","description":"Optional image upload ID already owned by the signing wallet."},"decimals":{"type":"integer"}}},"payloadJson":{"type":"string"},"payloadSha256":{"type":"string"},"network":{"const":"mainnet-beta"},"fees":{"$ref":"#/components/schemas/Fees"}}}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Launch access is missing or expired, or the wallet signature is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["wallet","market"],"properties":{"wallet":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"market":{"$ref":"#/components/schemas/MarketInput"}}}}}},"security":[{"launchSession":[]}],"description":"Requires an active launch session cookie from /api/admin-preview. A wallet signature alone does not bypass launch access."}},"/markets/commit":{"post":{"operationId":"commitMarketLaunch","summary":"Register the exact signed market; retry the same signed request after uncertain responses","responses":{"200":{"description":"Existing market returned for a valid retry; replayed=true.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitResponse"}}}},"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitResponse"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Launch access is missing or expired, or the wallet signature is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["challengeId","signature"],"properties":{"challengeId":{"type":"string","format":"uuid"},"signature":{"type":"string","pattern":"^[A-Za-z0-9+/]{86}==$","description":"64-byte Ed25519 signature over the exact returned UTF-8 message, encoded as base64."}}}}}},"security":[{"launchSession":[]}],"description":"Requires an active launch session cookie from /api/admin-preview. A wallet signature alone does not bypass launch access."}},"/quotes":{"get":{"operationId":"getMarketQuotes","summary":"Fetch indicative DEX references without RPC mint inspection","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"quotes":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Quote"}},"refreshAfterMs":{"const":30000}}}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}},"parameters":[{"name":"mints","in":"query","required":true,"schema":{"type":"string"},"description":"1–28 comma-separated Solana mint addresses. Missing prices are unavailable, not zero. Stale quotes must not be used as current references."}]}},"/status":{"get":{"operationId":"getProductStatus","summary":"Read feature availability; this is not an uptime monitor","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/offers/prepare":{"post":{"operationId":"prepareOffer","summary":"Prepare an unfunded buy or sell offer for owner review","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"wallet":{"type":"string"},"offer":{"$ref":"#/components/schemas/OfferInput"}},"required":["wallet","offer"]}}}},"responses":{"200":{"description":"Success or successful replay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedOffer"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"403":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until retry."}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/offers/commit":{"post":{"operationId":"commitOffer","summary":"Post the exact owner-signed wallet-held offer","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedCommit"}}}},"responses":{"200":{"description":"Success or successful replay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferResult"}}}},"201":{"description":"Offer posted; no trade or transfer executed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferResult"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"403":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until retry."}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/offers/cancel/prepare":{"post":{"operationId":"prepareOfferCancellation","summary":"Prepare cancellation of the owner's open wallet-held offer","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"wallet":{"type":"string"},"offerId":{"type":"string","format":"uuid"}},"required":["wallet","offerId"]}}}},"responses":{"200":{"description":"Success or successful replay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedCancellation"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"403":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until retry."}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/offers/cancel/commit":{"post":{"operationId":"commitOfferCancellation","summary":"Cancel a signed offer at the reviewed revision","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedCommit"}}}},"responses":{"200":{"description":"Success or successful replay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferResult"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"403":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until retry."}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/offers/{id}":{"get":{"operationId":"getOffer","summary":"Read an offer, including its latest listing status","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success or successful replay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferResult"}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"403":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until retry."}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/markets/{id}/offers":{"get":{"operationId":"listMarketOffers","summary":"List open unexpired offers without executing or reconciling trades","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string","format":"uuid"}},{"in":"query","name":"side","schema":{"enum":["buy","sell"]}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"offset","schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}],"responses":{"200":{"description":"Success or successful replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"offers":{"type":"array","items":{"$ref":"#/components/schemas/Offer"}},"nextOffset":{"type":["integer","null"]},"applicationAccess":{"const":"public_beta"},"notice":{"type":"string"}},"required":["offers","nextOffset","applicationAccess","notice"]}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"403":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until retry."}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}},"/tokens/{mint}":{"get":{"operationId":"checkTokenSupport","summary":"Check token compatibility and current authorities","description":"Accepts initialized original SPL mints and Token-2022 mints with no extensions or any combination of MetadataPointer, TokenMetadata and TransferFeeConfig. Other mint extensions remain unsupported. Token-2022 wallet accounts support ImmutableOwner and require TransferFeeAmount for fee-bearing mints. Token-2022 funded escrow is unavailable. Transfer tax belongs to the token, not Sidelot. Amounts and unit prices are before token tax.","parameters":[{"name":"mint","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success or successful replay","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"mint":{"type":"string"},"supported":{"const":true},"tokenProgram":{"type":"string","enum":["original-spl","token-2022"]},"tokenProgramId":{"type":"string","description":"Program that owns this mint. Use this program for supported wallet-held base-token transfers and associated token accounts."},"mintExtensions":{"type":"array","items":{"type":"string","enum":["MetadataPointer","TokenMetadata","TransferFeeConfig"]},"description":"Allowed extension names present on this mint. Empty for original SPL and unextended Token-2022 mints."},"escrowSupported":{"type":"boolean","description":"Token compatibility with the escrow program, not deployment availability or market activation. False for Token-2022. Check product status and the market before offering deposits."},"decimals":{"type":"integer"},"freezeAuthority":{"type":["string","null"]},"mintAuthority":{"type":["string","null"]},"warnings":{"type":"array","items":{"type":"string"}},"checkedAt":{"type":"integer"},"note":{"type":"string"},"transferFee":{"anyOf":[{"$ref":"#/components/schemas/TransferFeeInfo"},{"type":"null"}]}},"required":["mint","supported","tokenProgram","tokenProgramId","mintExtensions","escrowSupported","decimals","freezeAuthority","mintAuthority","warnings","checkedAt","note","transferFee"]}}}},"400":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"401":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"403":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"404":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"409":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"410":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"413":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"415":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}},"429":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until retry."}}},"503":{"description":"Error response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}}}}},"components":{"schemas":{"MarketInput":{"type":"object","additionalProperties":false,"required":["name","symbol","mint","type","feeWallet"],"properties":{"name":{"type":"string","minLength":2,"maxLength":60},"symbol":{"type":"string","minLength":1,"maxLength":16},"mint":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"type":{"type":"string","enum":["solo","community"]},"role":{"type":"string","enum":["holder","team"],"default":"holder"},"description":{"type":"string","maxLength":500},"feeWallet":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"On-curve wallet receiving the market share. Owner must review this address."},"website":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"social":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"chat":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"picture":{"type":"string","description":"Optional image upload ID already owned by the signing wallet."},"banner":{"type":"string","description":"Optional image upload ID already owned by the signing wallet."}}},"Fees":{"type":"object","properties":{"buyerBps":{"const":50},"launcherBps":{"const":25},"platformBps":{"const":25},"networkFeesIncluded":{"const":false}}},"Market":{"type":"object","required":["id","name","mint","owner","feeWallet"],"properties":{"name":{"type":"string","minLength":2,"maxLength":60},"symbol":{"type":"string","minLength":1,"maxLength":16},"mint":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"type":{"type":"string","enum":["solo","community"]},"role":{"type":"string","enum":["holder","team"],"default":"holder"},"description":{"type":"string","maxLength":500},"feeWallet":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","description":"On-curve wallet receiving the market share. Owner must review this address."},"website":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"social":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"chat":{"type":"string","maxLength":300,"description":"HTTPS URL without credentials. Website and social are required for team markets."},"picture":{"type":"string","description":"Optional image upload ID already owned by the signing wallet."},"banner":{"type":"string","description":"Optional image upload ID already owned by the signing wallet."},"id":{"type":"string","format":"uuid"},"owner":{"type":"string"},"decimals":{"type":"integer"},"createdAt":{"type":"integer"}}},"CommitResponse":{"type":"object","required":["market","url","applicationAccess","replayed","fees"],"properties":{"market":{"$ref":"#/components/schemas/Market"},"url":{"type":"string","format":"uri"},"applicationAccess":{"const":"public_beta"},"replayed":{"type":"boolean"},"fees":{"$ref":"#/components/schemas/Fees"},"marketCreationAccess":{"const":"password_required"}}},"Quote":{"type":"object","properties":{"mint":{"type":"string"},"status":{"enum":["live","stale","unavailable"]},"fetchedAt":{"type":["integer","null"],"description":"Provider retrieval time in Unix milliseconds, not last trade time."},"source":{"const":"DexScreener"},"name":{"type":"string"},"symbol":{"type":"string"},"priceUsd":{"type":["number","null"]},"priceSol":{"type":["number","null"]},"priceUsdc":{"type":["number","null"]},"marketCap":{"type":["number","null"]},"fdv":{"type":["number","null"]},"liquidityUsd":{"type":["number","null"]},"volume24h":{"type":["number","null"]},"change24h":{"type":["number","null"]},"pairAddress":{"type":["string","null"]},"dexId":{"type":["string","null"]}}},"OfferInput":{"type":"object","additionalProperties":false,"properties":{"marketId":{"type":"string","format":"uuid"},"side":{"enum":["buy","sell"]},"quote":{"enum":["SOL","USDC"]},"quantity":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":70,"description":"Gross tokens sent by seller before token tax. Use token preflight and review the buyer net amount."},"pricing":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"type":{"const":"fixed"},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":70,"description":"Positive decimal string; no exponent notation or JSON numbers."}},"required":["type","price"]},{"type":"object","additionalProperties":false,"properties":{"type":{"const":"offset"},"referencePrice":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":70,"description":"Positive decimal string; no exponent notation or JSON numbers."},"premiumBps":{"type":"integer","minimum":-9900,"maximum":100000}},"required":["type","referencePrice","premiumBps"]}]},"expiresInDays":{"type":"integer","enum":[1,3,7,30],"default":7}},"required":["marketId","side","quote","quantity","pricing"]},"Offer":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","format":"uuid"},"marketId":{"type":"string","format":"uuid"},"owner":{"type":"string"},"mint":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"side":{"enum":["buy","sell"]},"quote":{"enum":["SOL","USDC"]},"quantity":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":70,"description":"Gross tokens sent by seller, before any token transfer tax. Buyer receives less when tax applies."},"remaining":{"type":"string"},"quantityAtomic":{"type":"string"},"remainingAtomic":{"type":"string"},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":70,"description":"Quote price per gross token sent, before token tax; not per net token received."},"premiumBps":{"type":"integer"},"referencePrice":{"type":["string","null"]},"status":{"type":"string"},"revision":{"type":"integer"},"settlementMode":{"enum":["wallet","escrow"]},"fundsReserved":{"type":["boolean","null"],"description":"False for wallet-held listings. Null for escrow: this read does not verify chain balances."},"expiresAt":{"type":"integer"},"createdAt":{"type":"integer"},"quantityBasis":{"const":"gross_before_token_tax"}},"required":["id","marketId","owner","mint","symbol","decimals","side","quote","quantity","remaining","quantityAtomic","remainingAtomic","price","premiumBps","referencePrice","status","revision","settlementMode","fundsReserved","expiresAt","createdAt","quantityBasis"]},"SignedCommit":{"type":"object","additionalProperties":false,"properties":{"challengeId":{"type":"string","format":"uuid"},"signature":{"type":"string","pattern":"^[A-Za-z0-9+/]{86}==$","description":"Ed25519 signature of the exact returned UTF-8 message, base64 encoded."}},"required":["challengeId","signature"]},"OfferResult":{"type":"object","additionalProperties":false,"properties":{"offer":{"$ref":"#/components/schemas/Offer"},"url":{"type":"string","format":"uri"},"applicationAccess":{"const":"public_beta"},"replayed":{"type":"boolean"},"fees":{"$ref":"#/components/schemas/Fees"},"notice":{"type":"string"}},"required":["offer","url","applicationAccess","replayed","fees","notice"]},"OfferTerms":{"type":"object","additionalProperties":false,"properties":{"marketId":{"type":"string","format":"uuid"},"mint":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"side":{"enum":["buy","sell"]},"quote":{"enum":["SOL","USDC"]},"quantity":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":70,"description":"Gross tokens sent by seller, before any token transfer tax. Buyer receives less when tax applies."},"quantityAtomic":{"type":"string"},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":70,"description":"Quote price per gross token sent, before token tax; not per net token received."},"premiumBps":{"type":"integer"},"referencePrice":{"type":["string","null"]},"settlementMode":{"const":"wallet"},"fundsReserved":{"const":false},"expiresAt":{"type":"integer"},"feeWallet":{"type":"string"},"platformWallet":{"type":"string"},"fees":{"$ref":"#/components/schemas/Fees"},"fullFillExample":{"type":"object","additionalProperties":false,"properties":{"quote":{"type":"string"},"host":{"type":"string"},"platform":{"type":"string"},"total":{"type":"string"},"quoteDecimals":{"enum":[6,9]},"unit":{"const":"atomic quote units"},"note":{"type":"string"},"tokenTransfer":{"$ref":"#/components/schemas/TokenTransferAmounts"}},"required":["quote","host","platform","total","quoteDecimals","unit","note","tokenTransfer"]},"quantityBasis":{"const":"gross_before_token_tax"},"transferFee":{"anyOf":[{"$ref":"#/components/schemas/TransferFeeInfo"},{"type":"null"}]}},"required":["marketId","mint","symbol","decimals","side","quote","quantity","quantityAtomic","price","premiumBps","referencePrice","settlementMode","fundsReserved","expiresAt","feeWallet","platformWallet","fees","fullFillExample","quantityBasis","transferFee"]},"CancelTerms":{"type":"object","additionalProperties":false,"properties":{"offerId":{"type":"string","format":"uuid"},"marketId":{"type":"string","format":"uuid"},"revision":{"type":"integer"},"offer":{"$ref":"#/components/schemas/Offer"}},"required":["offerId","marketId","revision","offer"]},"PreparedOffer":{"type":"object","additionalProperties":false,"properties":{"challengeId":{"type":"string","format":"uuid"},"message":{"type":"string"},"messageEncoding":{"const":"utf-8"},"signatureEncoding":{"const":"base64"},"expiresAt":{"type":"integer","description":"Approval expiry in Unix milliseconds; separate from the offer expiry inside terms."},"payloadJson":{"type":"string"},"payloadSha256":{"type":"string"},"network":{"const":"mainnet-beta"},"fees":{"$ref":"#/components/schemas/Fees"},"terms":{"$ref":"#/components/schemas/OfferTerms"},"notice":{"type":"string"}},"required":["challengeId","message","messageEncoding","signatureEncoding","expiresAt","payloadJson","payloadSha256","network","fees","terms","notice"]},"PreparedCancellation":{"type":"object","additionalProperties":false,"properties":{"challengeId":{"type":"string","format":"uuid"},"message":{"type":"string"},"messageEncoding":{"const":"utf-8"},"signatureEncoding":{"const":"base64"},"expiresAt":{"type":"integer","description":"Approval expiry in Unix milliseconds; separate from the offer expiry inside terms."},"payloadJson":{"type":"string"},"payloadSha256":{"type":"string"},"network":{"const":"mainnet-beta"},"fees":{"$ref":"#/components/schemas/Fees"},"terms":{"$ref":"#/components/schemas/CancelTerms"},"notice":{"type":"string"}},"required":["challengeId","message","messageEncoding","signatureEncoding","expiresAt","payloadJson","payloadSha256","network","fees","terms","notice"]},"TransferFeeSchedule":{"type":"object","additionalProperties":false,"properties":{"epoch":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"basisPoints":{"type":"integer","minimum":0,"maximum":10000},"maximumFee":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","description":"Maximum withheld per transfer in atomic base-token units."}},"required":["epoch","basisPoints","maximumFee"]},"TransferFeeInfo":{"type":"object","additionalProperties":false,"description":"Token-controlled transfer tax, separate from Sidelot trading fees. Current preview only; execution checks the exact fee approved in each transaction.","properties":{"currentEpoch":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"current":{"$ref":"#/components/schemas/TransferFeeSchedule"},"scheduled":{"anyOf":[{"$ref":"#/components/schemas/TransferFeeSchedule"},{"type":"null"}]},"configAuthority":{"type":["string","null"]}},"required":["currentEpoch","current","scheduled","configAuthority"]},"TokenTransferAmounts":{"type":"object","additionalProperties":false,"description":"Atomic base-token units: seller sends grossAmount; token withholds feeAmount; buyer receives netAmount.","properties":{"grossAmount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"feeAmount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"netAmount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"}},"required":["grossAmount","feeAmount","netAmount"]}},"securitySchemes":{"launchSession":{"type":"apiKey","in":"cookie","name":"__Host-sidelot_preview","description":"Secure HttpOnly launch-access session. Obtain through /launch. Local HTTP development uses sidelot_preview. Do not expose session cookies to an AI model."}}}}