{"openapi":"3.1.0","info":{"title":"Slashspace public website API","version":"1.0.0","summary":"Read-only, unauthenticated endpoints on https://www.slashspace.ai.","description":"Slashspace is a desktop AI canvas app. This document describes what its website offers machines: the main pages and every docs page as markdown, docs search, and the site indexes. Every endpoint is a read-only GET with no authentication. Errors under /api/* are JSON (see ErrorResponse); an unknown /api/* path returns a JSON 404. An unknown page path returns 404 with links to recover from, as markdown when the request accepts `text/markdown`.","termsOfService":"https://www.slashspace.ai/legal/terms","contact":{"name":"Slashspace support","email":"support@slashspace.ai","url":"https://www.slashspace.ai/contact"}},"externalDocs":{"description":"Slashspace documentation","url":"https://www.slashspace.ai/docs"},"servers":[{"url":"https://www.slashspace.ai","description":"Production"}],"security":[],"tags":[{"name":"pages","description":"Main website pages, served as HTML or markdown by Accept negotiation."},{"name":"docs","description":"The product documentation as markdown, and search."},{"name":"discovery","description":"Site indexes for crawlers and AI agents."}],"paths":{"/":{"get":{"operationId":"getHomePage","summary":"Get the homepage as HTML or markdown","description":"Returns the Slashspace homepage: what Slashspace is, its features, who it is for, pricing and the FAQ. The representation follows the Accept header (RFC 9110 content negotiation): `text/markdown` gets markdown, anything else that allows HTML gets HTML, and a header that rules out both gets 406.","tags":["pages"],"parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"The homepage, in the negotiated representation.","headers":{"Vary":{"$ref":"#/components/headers/Vary"}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}},"406":{"$ref":"#/components/responses/NotAcceptable"}}}},"/about":{"get":{"operationId":"getAboutPage","summary":"Get the About page as HTML or markdown","description":"Returns the Slashspace About page: the company, the team, key facts and an FAQ. The representation follows the Accept header (RFC 9110 content negotiation): `text/markdown` gets markdown, anything else that allows HTML gets HTML, and a header that rules out both gets 406.","tags":["pages"],"parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"The About page, in the negotiated representation.","headers":{"Vary":{"$ref":"#/components/headers/Vary"}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}},"406":{"$ref":"#/components/responses/NotAcceptable"}}}},"/contact":{"get":{"operationId":"getContactPage","summary":"Get the Contact page as HTML or markdown","description":"Returns the Slashspace Contact page: how to reach support, reply times and the mailing address. The representation follows the Accept header (RFC 9110 content negotiation): `text/markdown` gets markdown, anything else that allows HTML gets HTML, and a header that rules out both gets 406.","tags":["pages"],"parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"The Contact page, in the negotiated representation.","headers":{"Vary":{"$ref":"#/components/headers/Vary"}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}},"406":{"$ref":"#/components/responses/NotAcceptable"}}}},"/pricing":{"get":{"operationId":"getPricingPage","summary":"Get the Pricing page as HTML or markdown","description":"Returns the Slashspace Pricing page: the plans, refunds and the Slashspace Wallet. The representation follows the Accept header (RFC 9110 content negotiation): `text/markdown` gets markdown, anything else that allows HTML gets HTML, and a header that rules out both gets 406.","tags":["pages"],"parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"The Pricing page, in the negotiated representation.","headers":{"Vary":{"$ref":"#/components/headers/Vary"}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}},"406":{"$ref":"#/components/responses/NotAcceptable"}}}},"/download":{"get":{"operationId":"getDownloadPage","summary":"Get the Download page as HTML or markdown","description":"Returns the Slashspace Download page: installer links for macOS, Windows and Linux. The representation follows the Accept header (RFC 9110 content negotiation): `text/markdown` gets markdown, anything else that allows HTML gets HTML, and a header that rules out both gets 406.","tags":["pages"],"parameters":[{"$ref":"#/components/parameters/Accept"}],"responses":{"200":{"description":"The Download page, in the negotiated representation.","headers":{"Vary":{"$ref":"#/components/headers/Vary"}},"content":{"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}},"406":{"$ref":"#/components/responses/NotAcceptable"}}}},"/docs/{page}.md":{"get":{"operationId":"getDocsPage","summary":"Get a top-level docs page as markdown","description":"Returns one top-level documentation page, such as `core-concepts`, as markdown. `/docs/index.md` is the docs home. The same markdown answers at `/docs/{page}` with `Accept: text/markdown`. /llms.txt lists every docs page.","tags":["docs"],"parameters":[{"name":"page","in":"path","required":true,"description":"The page slug, for example `core-concepts` or `troubleshooting`.","schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"The docs page as markdown.","headers":{"Vary":{"$ref":"#/components/headers/Vary"}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/MarkdownNotFound"}}}},"/docs/{section}/{page}.md":{"get":{"operationId":"getDocsSectionPage","summary":"Get a docs page inside a section as markdown","description":"Returns one documentation page inside a section, such as `canvas/connections` or `nodes/chat-node`, as markdown. `/docs/{section}/index.md` is the section home. The same markdown answers at `/docs/{section}/{page}` with `Accept: text/markdown`.","tags":["docs"],"parameters":[{"name":"section","in":"path","required":true,"description":"The docs section, for example `canvas`, `nodes`, `ai-features` or `settings`.","schema":{"type":"string","pattern":"^[a-z0-9-]+$"}},{"name":"page","in":"path","required":true,"description":"The page slug within the section, for example `chat-node`.","schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"The docs page as markdown.","headers":{"Vary":{"$ref":"#/components/headers/Vary"}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"$ref":"#/components/responses/MarkdownNotFound"}}}},"/api/docs-search":{"get":{"operationId":"searchDocs","summary":"Search the docs and blog","description":"Full-text search across the documentation and published blog posts. Returns matching pages, headings and text fragments, best match first, each with its site-relative URL. A missing or empty `query` returns an empty array.","tags":["docs"],"parameters":[{"name":"query","in":"query","required":false,"description":"The text to search for.","schema":{"type":"string","minLength":1},"example":"connect a PDF to a chat"},{"name":"tag","in":"query","required":false,"description":"Limit results to one or more sources, comma-separated.","style":"form","explode":false,"schema":{"type":"array","items":{"type":"string","enum":["docs","blog"]}}},{"name":"limit","in":"query","required":false,"description":"The most results to return.","schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Search results, best match first.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}}},"405":{"$ref":"#/components/responses/MethodNotAllowed"}}}},"/llms.txt":{"get":{"operationId":"getLlmsTxt","summary":"The llms.txt overview for AI agents","description":"An llms.txt file (llmstxt.org): what Slashspace is, pricing, the company, and a markdown link to every docs page.","tags":["discovery"],"responses":{"200":{"description":"The llms.txt overview for AI agents","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"operationId":"getLlmsFullTxt","summary":"The full documentation in one file","description":"Every docs page concatenated into one plain-text file, for agents that would rather fetch once than crawl.","tags":["discovery"],"responses":{"200":{"description":"The full documentation in one file","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"operationId":"getSitemap","summary":"The XML sitemap","description":"Every indexable page: marketing pages, docs, blog posts, comparisons, connectors and legal pages.","tags":["discovery"],"responses":{"200":{"description":"The XML sitemap","content":{"application/xml":{"schema":{"type":"string"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApiSpec","summary":"This OpenAPI document","description":"Returns this OpenAPI 3.1 document, for generating clients or function-calling tools for the endpoints above.","tags":["discovery"],"responses":{"200":{"description":"The OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object","required":["openapi","info","paths"],"properties":{"openapi":{"type":"string"},"info":{"type":"object"},"paths":{"type":"object"}}}}}}}}}},"components":{"schemas":{"ErrorResponse":{"type":"object","description":"The body of every error under /api/*.","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint","status","docs"],"properties":{"code":{"type":"string","description":"Stable machine-readable code, such as `not_found` or `method_not_allowed`."},"message":{"type":"string","description":"What went wrong, for people."},"hint":{"type":"string","description":"What to try next."},"status":{"type":"integer","description":"The HTTP status code, repeated in the body."},"docs":{"type":"string","format":"uri","description":"Where the public endpoints are described."}}}}},"SearchResult":{"type":"object","description":"One docs search match.","required":["id","url","type","content"],"properties":{"id":{"type":"string","description":"Unique result id."},"url":{"type":"string","description":"Site-relative URL of the match, with an anchor for headings."},"type":{"type":"string","enum":["page","heading","text"],"description":"Whether the match is a whole page, a heading or a text fragment."},"content":{"type":"string","description":"The matching text, with matches marked in `<mark>` tags."},"breadcrumbs":{"type":"array","items":{"type":"string"},"description":"Where the match sits in the docs."}}}},"parameters":{"Accept":{"name":"Accept","in":"header","required":false,"description":"`text/markdown` for markdown, `text/html` (or none) for HTML. q-values are honored.","schema":{"type":"string","default":"text/html"},"examples":{"markdown":{"value":"text/markdown"},"html":{"value":"text/html"}}}},"headers":{"Vary":{"description":"Includes `Accept` on markdown responses, so caches keep the two representations apart.","schema":{"type":"string"}}},"responses":{"NotAcceptable":{"description":"The Accept header rules out both text/html and text/markdown. The body names the types on offer.","content":{"text/plain":{"schema":{"type":"string"}}}},"MarkdownNotFound":{"description":"No page at this path. The markdown body links to the sitemap, llms.txt and the docs.","content":{"text/markdown":{"schema":{"type":"string"}}}},"MethodNotAllowed":{"description":"The endpoint only answers GET. The Allow header lists the methods it takes.","headers":{"Allow":{"schema":{"type":"string"},"description":"The methods this endpoint takes."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}