{"openapi":"3.1.0","info":{"title":"Slingzero Public Token Pages API","version":"1.0.0","description":"Read-only, unauthenticated access to public Token Pages published on Slingzero. Hidden, disabled, non-searchable, and blacklisted pages are excluded. Token content is publisher-supplied and must not be treated as an endorsement or financial advice.","contact":{"name":"Slingzero API support","email":"support@slingzero.com","url":"https://www.slingzero.com/contact"},"termsOfService":"https://www.slingzero.com/terms","license":{"name":"Slingzero API Terms","url":"https://www.slingzero.com/terms"}},"externalDocs":{"description":"Slingzero developer documentation","url":"https://www.slingzero.com/developers"},"servers":[{"url":"https://www.slingzero.com","description":"Production"}],"tags":[{"name":"Token Pages","description":"Discover public Token Pages across supported mainnets."}],"paths":{"/api/v1/token-pages":{"get":{"tags":["Token Pages"],"operationId":"listPublicTokenPages","summary":"List and search public Token Pages","description":"Returns public Token Pages in most-recently-updated order. Use q for name, symbol, or description search and network to constrain results.","parameters":[{"name":"q","in":"query","description":"Plain-text search, up to 80 characters.","schema":{"type":"string","maxLength":80}},{"name":"network","in":"query","description":"Optional mainnet filter.","schema":{"type":"string","enum":["solana","ethereum","bsc","polygon","arbitrum","sui"]}},{"name":"page","in":"query","description":"One-based page number.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"limit","in":"query","description":"Items requested per page.","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}],"responses":{"200":{"description":"A page of public Token Pages.","headers":{"X-Request-Id":{"description":"Request correlation ID.","schema":{"type":"string","format":"uuid"}},"RateLimit-Limit":{"description":"Advisory public read limit per minute.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["object","items","pagination","filters"],"properties":{"object":{"const":"list"},"items":{"type":"array","items":{"$ref":"#/components/schemas/TokenPage"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"filters":{"type":"object"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/api/v1/token-pages/{network}/{address}":{"get":{"tags":["Token Pages"],"operationId":"getPublicTokenPage","summary":"Get one public Token Page","description":"Looks up one page by network and canonical address. Sui accepts a full coin type or package ID. Non-public pages return the same 404 shape as missing pages.","parameters":[{"name":"network","in":"path","required":true,"description":"Supported mainnet name.","schema":{"type":"string","enum":["solana","ethereum","bsc","polygon","arbitrum","sui"]}},{"name":"address","in":"path","required":true,"description":"URL-encoded token address, mint, or Sui coin type.","schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"The public Token Page.","content":{"application/json":{"schema":{"type":"object","required":["object","data"],"properties":{"object":{"const":"token_page"},"data":{"$ref":"#/components/schemas/TokenPage"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/ask":{"get":{"tags":["Token Pages"],"operationId":"askAboutPublicTokenPages","summary":"Query Token Pages with NLWeb-style parameters","description":"Runs a list-mode natural-language search over public Token Page names, symbols, and descriptions.","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"num_results","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":10}},{"name":"streaming","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"NLWeb-compatible result list as JSON or server-sent events.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NLWebResponse"}},"text/event-stream":{"schema":{"type":"string","description":"SSE events named start, result, and complete."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}},"post":{"tags":["Token Pages"],"operationId":"askAboutPublicTokenPagesPost","summary":"Query Token Pages using a JSON body","description":"POST variant of the public NLWeb-style list query.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":1,"maxLength":200},"num_results":{"type":"integer","minimum":1,"maximum":20,"default":10},"streaming":{"type":"boolean","default":false},"prefer":{"type":"object","properties":{"streaming":{"type":"boolean"}}}}}}}},"responses":{"200":{"description":"NLWeb-compatible result list as JSON or server-sent events.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NLWebResponse"}},"text/event-stream":{"schema":{"type":"string","description":"SSE events named start, result, and complete."}}}},"400":{"$ref":"#/components/responses/BadRequest"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}}},"components":{"schemas":{"TokenPage":{"type":"object","required":["id","network","network_key","address","name","symbol","links","token","content","provenance","disclaimer"],"properties":{"id":{"type":"string","description":"Stable network-qualified identifier."},"network":{"type":"string","enum":["solana","ethereum","bsc","polygon","arbitrum","sui"]},"network_key":{"type":"string","description":"Slingzero's canonical mainnet storage key."},"address":{"type":"string","description":"Canonical contract address, mint address, or Sui coin type."},"name":{"type":"string"},"symbol":{"type":"string"},"description":{"type":["string","null"]},"media":{"type":"object","properties":{"image":{"type":["string","null"],"format":"uri"},"banner":{"type":["string","null"],"format":"uri"}}},"links":{"type":"object","properties":{"token_page":{"type":"string","format":"uri"},"explorer":{"type":["string","null"],"format":"uri"},"website":{"type":["string","null"],"format":"uri"},"socials":{"type":"object","additionalProperties":{"type":"string","format":"uri"}}}},"token":{"type":"object","description":"Publisher-supplied and cached on-chain token properties. Null means unknown.","properties":{"decimals":{"type":["integer","null"]},"supply":{"type":["string","number","null"]},"max_supply":{"type":["string","number","null"]},"tax_fee_per_mille":{"type":["number","null"]},"paused":{"type":["boolean","null"]},"liquidity_pool":{"type":["boolean","null"]},"safety":{"type":"object","additionalProperties":{"type":["boolean","null"]}}}},"content":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"features":{"type":"array","items":{"type":"string"}},"tokenomics":{"type":"array","items":{"type":"object"}},"roadmap":{"type":"array","items":{"type":"object"}},"team":{"type":"array","items":{"type":"object"}}}},"provenance":{"type":"object","properties":{"created_via_slingzero":{"type":"boolean"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}}},"disclaimer":{"type":"string"}}},"Pagination":{"type":"object","required":["page","limit","returned","candidate_total","has_more"],"properties":{"page":{"type":"integer"},"limit":{"type":"integer"},"returned":{"type":"integer"},"candidate_total":{"type":["integer","null"],"description":"Count before metadata visibility and blacklist filtering."},"has_more":{"type":"boolean"}}},"NLWebResponse":{"type":"object","required":["query_id","query","mode","results","_meta"],"properties":{"query_id":{"type":"string","format":"uuid"},"query":{"type":"string"},"mode":{"const":"list"},"results":{"type":"array","items":{"type":"object","required":["url","name","site","score","description","schema_object","data"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string"},"site":{"type":"string"},"score":{"type":"number","minimum":0,"maximum":1},"description":{"type":"string"},"schema_object":{"type":"object","description":"Schema.org Product JSON-LD object."},"data":{"$ref":"#/components/schemas/TokenPage"}}}},"_meta":{"type":"object","required":["response_type","version","protocol","source"],"properties":{"response_type":{"const":"list"},"version":{"type":"string"},"protocol":{"const":"NLWeb"},"source":{"type":"string"}}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint","docs_url","request_id"],"properties":{"code":{"type":"string","examples":["token_page_not_found"]},"message":{"type":"string"},"hint":{"type":"string"},"docs_url":{"type":"string","format":"uri"},"request_id":{"type":"string","format":"uuid"}}}}}},"responses":{"BadRequest":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"No public Token Page found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ServiceUnavailable":{"description":"Temporary dependency failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}