{"openapi":"3.1.0","info":{"title":"Neuroscale Public API","summary":"Read-only access to Neuroscale's product, pricing, and published content for Arbi, Aurora, and Athena.","description":"The Neuroscale Public API exposes the same facts the neuroscale.ai website renders: the three products (Arbi, the AI recruiting platform; Aurora, the AI campaign studio; Athena, the AI career platform), their published pricing, the release log, the engineering and hiring blog, and customer case studies.\n\nIt exists so an AI agent answering a question about Neuroscale can read structured JSON instead of scraping marketing HTML. Every response is JSON, every error uses the same envelope with a stable `code`, and every content resource links to both its human-readable page and its markdown twin.\n\n**This is not the Arbi product API.** It reads public website content only; it holds no candidate, customer, or account data and cannot perform recruiting actions. For programmatic access to the Arbi platform itself, see https://docs.neuroscale.ai/ or contact sales@neuroscale.ai.","version":"1.0.0","termsOfService":"https://neuroscale.ai/terms","contact":{"name":"Neuroscale","url":"https://neuroscale.ai/developers","email":"support@neuroscale.ai"},"license":{"name":"Neuroscale Terms of Service","url":"https://neuroscale.ai/terms"},"x-logo":{"url":"https://neuroscale.ai/icon-512.png","altText":"Neuroscale"}},"servers":[{"url":"https://neuroscale.ai","description":"Production"}],"externalDocs":{"description":"Developer and agent resources","url":"https://neuroscale.ai/developers"},"tags":[{"name":"Products","description":"What Neuroscale sells: Arbi, Aurora, and Athena, and what each one is for."},{"name":"Pricing","description":"Published plan pricing, in the same numbers the pricing page shows."},{"name":"Content","description":"Blog posts, release notes, and customer stories, with markdown bodies."},{"name":"Search","description":"One query across every piece of published content."}],"security":[],"x-rate-limit":{"requestsPerMinute":60,"scope":"per IP address","response":"429 with code `rate_limited` and a `Retry-After` header"},"paths":{"/api/v1/products":{"get":{"operationId":"listProducts","tags":["Products"],"summary":"List Neuroscale products","description":"Returns all three Neuroscale products — Arbi, Aurora, and Athena — with the audience each one serves and its headline capabilities. Start here when you need to work out which product a question is actually about.","responses":{"200":{"description":"The product catalog.","content":{"application/json":{"schema":{"type":"object","description":"Every Neuroscale product.","required":["object","url","count","data"],"properties":{"object":{"type":"string","const":"list"},"url":{"type":"string","format":"uri-reference","description":"The endpoint this list was read from."},"count":{"type":"integer","minimum":0,"description":"Number of items in `data`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"}}}}}}},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/pricing/{product}":{"get":{"operationId":"getProductPricing","tags":["Pricing"],"summary":"Get published pricing for a product","description":"Returns the live plan list for one product, including monthly and annual per-seat prices in USD and the features each plan includes. Prices are the same ones the pricing page renders; a plan priced on application has null prices and a `priceLabel` instead.","parameters":[{"name":"product","in":"path","required":true,"description":"Which product's price list to read. Aurora is quoted per engagement and has no published plans.","schema":{"type":"string","enum":["arbi","athena"]},"example":"arbi"}],"responses":{"200":{"description":"The product's published plans.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingList"}}}},"400":{"$ref":"#/components/responses/InvalidParameter"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/posts":{"get":{"operationId":"listBlogPosts","tags":["Content"],"summary":"List published blog posts","description":"Returns published posts newest first, without their bodies. Use `getBlogPost` for the full markdown of one post.","parameters":[{"$ref":"#/components/parameters/Limit"},{"name":"category","in":"query","required":false,"description":"Case-insensitive exact match on the post's category label.","schema":{"type":"string","maxLength":64},"example":"Engineering"}],"responses":{"200":{"description":"Matching posts, newest first.","content":{"application/json":{"schema":{"type":"object","description":"Published blog posts.","required":["object","url","count","data"],"properties":{"object":{"type":"string","const":"list"},"url":{"type":"string","format":"uri-reference","description":"The endpoint this list was read from."},"count":{"type":"integer","minimum":0,"description":"Number of items in `data`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/BlogPostSummary"}}}}}}},"400":{"$ref":"#/components/responses/InvalidParameter"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/posts/{slug}":{"get":{"operationId":"getBlogPost","tags":["Content"],"summary":"Get one blog post with its body","description":"Returns a single published post including its full body as markdown. Draft posts are not readable through this API and return 404.","parameters":[{"name":"slug","in":"path","required":true,"description":"The post's URL slug, as returned by `listBlogPosts`.","schema":{"$ref":"#/components/schemas/Slug"},"example":"boolean-search-is-a-dead-end"}],"responses":{"200":{"description":"The post.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPost"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/releases":{"get":{"operationId":"listReleases","tags":["Content"],"summary":"List Arbi releases","description":"Returns the Arbi release log newest first, each entry with its change list. Use this to answer 'when did Arbi ship X' without reading the changelog page.","parameters":[{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"Releases, newest first.","content":{"application/json":{"schema":{"type":"object","description":"Published Arbi releases.","required":["object","url","count","data"],"properties":{"object":{"type":"string","const":"list"},"url":{"type":"string","format":"uri-reference","description":"The endpoint this list was read from."},"count":{"type":"integer","minimum":0,"description":"Number of items in `data`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Release"}}}}}}},"400":{"$ref":"#/components/responses/InvalidParameter"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/releases/{version}":{"get":{"operationId":"getRelease","tags":["Content"],"summary":"Get one release by version","description":"Returns a single published release and every change it shipped. A leading `v` is tolerated.","parameters":[{"name":"version","in":"path","required":true,"description":"The release version string, without a leading `v`, as returned by `listReleases`.","schema":{"type":"string","pattern":"^[0-9]+(\\.[0-9]+){0,3}$","maxLength":32},"example":"2.18"}],"responses":{"200":{"description":"The release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/customers":{"get":{"operationId":"listCustomerStories","tags":["Content"],"summary":"List customer case studies","description":"Returns published customer stories with their measured results. Each story names the industry, team size, region, and which Neuroscale products the customer uses.","parameters":[{"$ref":"#/components/parameters/Limit"},{"name":"industry","in":"query","required":false,"description":"Case-insensitive exact match on the customer's industry label.","schema":{"type":"string","maxLength":64},"example":"Technology"}],"responses":{"200":{"description":"Matching customer stories.","content":{"application/json":{"schema":{"type":"object","description":"Published customer stories.","required":["object","url","count","data"],"properties":{"object":{"type":"string","const":"list"},"url":{"type":"string","format":"uri-reference","description":"The endpoint this list was read from."},"count":{"type":"integer","minimum":0,"description":"Number of items in `data`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/CustomerStorySummary"}}}}}}},"400":{"$ref":"#/components/responses/InvalidParameter"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/customers/{slug}":{"get":{"operationId":"getCustomerStory","tags":["Content"],"summary":"Get one customer story with its narrative","description":"Returns a single published customer story including the full case-study narrative as markdown.","parameters":[{"name":"slug","in":"path","required":true,"description":"The story's URL slug, as returned by `listCustomerStories`.","schema":{"$ref":"#/components/schemas/Slug"},"example":"nvidia"}],"responses":{"200":{"description":"The customer story.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerStory"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/api/v1/search":{"get":{"operationId":"searchContent","tags":["Search"],"summary":"Search all published content","description":"Runs one case-insensitive query across blog posts, releases, customer stories, and the site's fixed pages, ranked by where the match landed (title beats description beats body). This is the cheapest way to find the right URL before fetching it.","parameters":[{"name":"q","in":"query","required":true,"description":"The search query. Two characters or more.","schema":{"type":"string","minLength":2,"maxLength":128},"example":"candidate screening"},{"name":"type","in":"query","required":false,"description":"Restrict results to one kind of content.","schema":{"type":"string","enum":["page","blog_post","release","customer_story"]}},{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"Ranked results, best first.","content":{"application/json":{"schema":{"type":"object","description":"Ranked search results.","required":["object","url","count","data"],"properties":{"object":{"type":"string","const":"list"},"url":{"type":"string","format":"uri-reference","description":"The endpoint this list was read from."},"count":{"type":"integer","minimum":0,"description":"Number of items in `data`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}}}}},"400":{"$ref":"#/components/responses/InvalidParameter"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}}}}},"components":{"parameters":{"Limit":{"name":"limit","in":"query","required":false,"description":"Maximum number of items to return.","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}},"responses":{"InvalidParameter":{"description":"A parameter was missing, malformed, or outside its allowed range. `code` is `invalid_parameter` or `bad_request`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"No resource matches that identifier. `code` is `not_found`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limit exceeded. `code` is `rate_limited`; a `Retry-After` header gives the wait in seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"Something failed on our side. `code` is `internal_error`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Slug":{"type":"string","description":"Lowercase URL segment: letters, digits, and hyphens.","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","maxLength":128},"Error":{"type":"object","title":"Error","description":"Every non-2xx response from this API has this shape. Branch on `code`, show `message`, act on `hint`.","required":["error","code","message","hint","status","docs"],"properties":{"error":{"type":"string","description":"The message, repeated at the top level for older clients."},"code":{"type":"string","description":"Stable, machine-readable failure identifier.","enum":["bad_request","invalid_parameter","validation_failed","unauthorized","forbidden","not_found","method_not_allowed","not_acceptable","payload_too_large","rate_limited","not_configured","upstream_error","internal_error"]},"message":{"type":"string","description":"What went wrong, in one sentence."},"hint":{"type":"string","description":"What to change about the request to fix it."},"status":{"type":"integer","description":"The HTTP status code, repeated in the body."},"docs":{"type":"string","format":"uri","description":"Where the error codes are documented."},"details":{"type":"array","description":"Field-level problems, when there are any.","items":{"type":"object","required":["field","issue"],"properties":{"field":{"type":"string"},"issue":{"type":"string"}}}}}},"Product":{"type":"object","title":"Product","description":"One Neuroscale product.","required":["object","id","name","tagline","description","audience","url","capabilities"],"properties":{"object":{"type":"string","const":"product"},"id":{"type":"string","enum":["arbi","aurora","athena"]},"name":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"audience":{"type":"string","description":"Who the product is sold to."},"url":{"type":"string","format":"uri"},"pricingUrl":{"type":["string","null"],"format":"uri","description":"Null when the product is quoted per engagement."},"capabilities":{"type":"array","items":{"type":"string"},"description":"What the product does, one capability per entry."}}},"PricingPlan":{"type":"object","title":"PricingPlan","description":"One published plan. Prices are per seat per month in USD; `annualPrice` is the effective monthly rate when billed annually.","required":["object","id","name","description","monthlyPrice","annualPrice","currency","features"],"properties":{"object":{"type":"string","const":"pricing_plan"},"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"monthlyPrice":{"type":["number","null"],"description":"Null when the plan is priced on application."},"annualPrice":{"type":["number","null"],"description":"Null when the plan is priced on application."},"currency":{"type":"string","const":"USD"},"priceLabel":{"type":["string","null"],"description":"Shown instead of a number when there is no price."},"highlight":{"type":"boolean","description":"True for the plan the pricing page recommends."},"cta":{"type":"string"},"ctaUrl":{"type":"string","format":"uri-reference"},"features":{"type":"array","items":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"hasDetail":{"type":"boolean","description":"True when the pricing page attaches an explainer to this line."}}}}}},"PricingList":{"type":"object","title":"PricingList","required":["object","url","product","currency","count","data"],"properties":{"object":{"type":"string","const":"list"},"url":{"type":"string","format":"uri-reference"},"product":{"type":"string","enum":["arbi","athena"]},"currency":{"type":"string","const":"USD"},"billingPeriods":{"type":"array","items":{"type":"string","enum":["monthly","annual"]}},"count":{"type":"integer","minimum":0},"data":{"type":"array","items":{"$ref":"#/components/schemas/PricingPlan"}}}},"BlogPostSummary":{"type":"object","title":"BlogPostSummary","description":"A published post without its body.","required":["object","slug","title","description","category","author","publishedAt","url","markdownUrl"],"properties":{"object":{"type":"string","const":"blog_post"},"slug":{"$ref":"#/components/schemas/Slug"},"title":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"author":{"type":"object","required":["name","role"],"properties":{"name":{"type":"string"},"role":{"type":"string"}}},"publishedAt":{"type":"string","format":"date","description":"ISO 8601 date, YYYY-MM-DD."},"updatedAt":{"type":"string","format":"date-time"},"url":{"type":"string","format":"uri"},"markdownUrl":{"type":"string","format":"uri","description":"The same post as plain markdown."}}},"BlogPost":{"allOf":[{"$ref":"#/components/schemas/BlogPostSummary"},{"type":"object","required":["body"],"properties":{"body":{"type":"string","description":"The full post body, as markdown."}}}]},"Release":{"type":"object","title":"Release","description":"One entry in the Arbi release log.","required":["object","version","title","summary","area","date","url","markdownUrl","changes"],"properties":{"object":{"type":"string","const":"release"},"version":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"area":{"type":"string","description":"The part of Arbi the release touched."},"date":{"type":"string","format":"date"},"url":{"type":"string","format":"uri"},"markdownUrl":{"type":"string","format":"uri"},"changes":{"type":"array","items":{"type":"object","required":["tag","text"],"properties":{"tag":{"type":"string","description":"The kind of change, e.g. New, Improved, Fixed."},"text":{"type":"string"}}}}}},"CustomerStorySummary":{"type":"object","title":"CustomerStorySummary","description":"A published case study without its narrative.","required":["object","slug","company","industry","headline","summary","results","productsUsed","url"],"properties":{"object":{"type":"string","const":"customer_story"},"slug":{"$ref":"#/components/schemas/Slug"},"company":{"type":"string"},"industry":{"type":"string"},"teamSize":{"type":"string"},"region":{"type":"string"},"headline":{"type":"string"},"summary":{"type":"string"},"results":{"type":"array","description":"The measured outcomes the story reports.","items":{"type":"object","required":["value","label"],"properties":{"value":{"type":"string"},"label":{"type":"string"}}}},"quote":{"type":["object","null"],"required":["text","name","role"],"properties":{"text":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"}}},"productsUsed":{"type":"array","items":{"type":"string"}},"url":{"type":"string","format":"uri"}}},"CustomerStory":{"allOf":[{"$ref":"#/components/schemas/CustomerStorySummary"},{"type":"object","required":["body"],"properties":{"body":{"type":"string","description":"The full case-study narrative, as markdown."}}}]},"SearchResult":{"type":"object","title":"SearchResult","required":["object","type","title","description","url","score"],"properties":{"object":{"type":"string","const":"search_result"},"type":{"type":"string","enum":["page","blog_post","release","customer_story"]},"title":{"type":"string"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"markdownUrl":{"type":["string","null"],"format":"uri","description":"The markdown twin, when the result has a dedicated one."},"score":{"type":"number","description":"Relative relevance. Higher is better; comparable only within one response."}}}}}}