Curiosity API

Curiosity API as documented publicly: 47 operations. Contract generated from the documentation by API Evangelist (2026-10-12); not the provider's own document.

Operations 47

POST /api/admin-agent/sessions/{id}/commit/approve Approve a session commit; streams log and result events. #
POST /api/admin-agent/sessions/{id}/uploads Attach a file to an admin‑assistant conversation. #
GET /api/build/{buildid} Everything the admin Build tree draws, in one call and with no source code in it. #
POST /api/cce/{name} Lower-level invocation alias used by the front-end. #
POST /api/chatai/chat Send a turn to the chat assistant. Used by the built-in chat view. #
GET /api/chatai/deep-research/settings The deep research queue limits, the workspace's researchers, and the runs executing or queued right now. Admin only. #
POST /api/chatai/deep-research/{deepresearchid} Stop the deep research running in a conversation. Admin, write access. #
GET /api/chatai/tools/metrics Per-tool invocation metrics (counts, average latency, error rate). Admin only. #
GET /api/code/history/all The workspace change‑history timeline, newest first, backing Manage → Operate → Change History. #
GET /api/embeddings/{embeddingid} Reference for the embeddings surface in Curiosity Studio: how to encode text, query for similar nodes, and project embeddings for visualization. #
POST /api/embeddings/{embeddingid} Reference for the embeddings surface in Curiosity Studio: how to encode text, query for similar nodes, and project embeddings for visualization. #
GET /api/endpoints/metrics Per-endpoint invocation metrics. Admin only. #
GET /api/endpoints/run/similar-tickets Custom endpoint invocation – Example — calling a custom endpoint. #
POST /api/endpoints/run/{name} Custom endpoints #
POST /api/endpoints/token/run/{name} Authentication #
POST /api/graph/import-definitions Import definitions to a workspace; streams log and result events. #
GET /api/graph/logs-files/download Every match of a historical log search, streamed as one .log file. #
GET /api/graph/stats/{statid} The per‑node‑type / per‑edge‑type database counters, as the aligned table the server logs periodically. #
PUT /api/groups/group Create or update a group (behaviour changes section). #
PUT /api/groups/group/{groupuid} Update a specific group identified by UID. #
POST /api/groups/group/{groupuid}/delete Delete a specific group identified by UID. #
GET /api/groups/group/{groupuid}/users GET /api/groups/group/{groupUID}/users #
GET /api/login/check Verify a session JWT is still valid. #
POST /api/login/create Authenticate via the login endpoint. #
POST /api/login/password/{passwordid} Change the calling user's password. #
POST /api/migrations/{migrationid} Migration jobs (admin, write access). POST /api/migrations/cancel cancels the run and waits up to 30 seconds for it to stop, so a caller can rewrite or reset the task straight afte #
POST /api/node/download/csv search results – the CSV / JSON Lines / Excel downloads (POST /api/node/download/csv, download/jsonl, download/zip). #
POST /api/node/download/synthetic/{syntheticid} Synthetic sample downloads (any signed-in, non-guest user). POST /api/node/download/synthetic/csv no longer take a baseURL query parameter — the export now carries only the generat #
POST /api/node/many/{manyid} User record field visibility – The projection applies to every generic reader: POST /api/node/many/field (which answers BLOCKED for a field the caller may not read). #
POST /api/node/query User record field visibility – The projection applies to every generic reader: POST /api/node/query. #
GET /api/node/{uid} User record field visibility – The projection applies to every generic reader: GET /api/node/{uid}. #
POST /api/saml/acs Assertion Consumer Service endpoint — the SAML callback. #
GET /api/saml/createrequest/{providername}/{issuer}/{destination} Builds an AuthnRequest for the configured provider. #
GET /api/search/settings/llm Which node types and search filters the built-in search tool exposes to an assistant, plus every filter available for the enabled node types. Admin only. #
PUT /api/search/settings/llm Store the exposed node types and filters. An empty set restores the built-in defaults. Admin, write access. #
GET /api/search/synonyms/for The synonyms, alternates, blocked terms and suggested candidates for one term. #
PUT /api/search/synonyms/for Store the Synonyms, Alternates and Blocked lists for one term — all three are required, send [] for unused ones. #
GET /api/search/synonyms/list/for Every term that has synonyms configured for a language. #
POST /api/{provider}/config Update the SSO config (admin only). #
GET /api/{provider}/{id} Callback the identity provider redirects back to after the user authenticates. #
POST /chat/completions POST /chat/completions #
GET /install.sh Download install script #
GET /models GET /models #
POST /v1/messages POST /v1/messages #
POST /v1/messages/count_tokens POST /v1/messages/count_tokens #
GET /v1/models GET /v1/models #
GET /v1/models/{id} GET /v1/models/{id} #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/curiosity:curiosity-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

curiosity-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Curiosity API
  version: '2026-10-12'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-12: 47 operation(s) read from 10 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Curiosity has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 1
    documentation: 46
    pages-with-code: 4
    pages-read: 10
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-12'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.curiosity.ai/workspace-learning/07-apis-endpoints/02-authentication
  - https://docs.curiosity.ai/workspace-learning/07-apis-endpoints/03-custom-endpoints
  - https://curiosity.ai/developers
  - https://docs.curiosity.ai/workspace-build/apis-and-customization/extensibility-and-apis/api-overview
  - https://docs.curiosity.ai/workspace/getting-started/build-your-first-enterprise-ai-app
  - https://docs.curiosity.ai/workspace-api/token-scopes
  - https://docs.curiosity.ai/workspace-api/llm-router
  - https://docs.curiosity.ai/workspace-api/rest-api
  - https://docs.curiosity.ai/workspace-api/graph-query-language
  - https://docs.curiosity.ai/workspace-api/embeddings-api
servers:
- url: https://<your-workspace-host>/api
paths:
  /api/admin-agent/sessions/{id}/commit/approve:
    post:
      operationId: post_api_admin_agent_sessions_id_commit_approve
      tags:
      - Api
      summary: Approve a session commit; streams log and result events.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/admin-agent/sessions/{id}/uploads:
    post:
      operationId: post_api_admin_agent_sessions_id_uploads
      tags:
      - Api
      summary: Attach a file to an admin‑assistant conversation.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiAdminAgentSessionsIdUploadsRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiAdminAgentSessionsIdUploadsResponse'
      x-evidence:
        kind: documentation
  /api/build/{buildid}:
    get:
      operationId: get_api_build_buildid
      tags:
      - Api
      summary: Everything the admin Build tree draws, in one call and with no source code in it.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: buildid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at buildId
  /api/cce/{name}:
    post:
      operationId: post_api_cce_name
      tags:
      - Api
      summary: Lower-level invocation alias used by the front-end.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/chatai/chat:
    post:
      operationId: post_api_chatai_chat
      tags:
      - Api
      summary: Send a turn to the chat assistant. Used by the built-in chat view.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/chatai/deep-research/settings:
    get:
      operationId: get_api_chatai_deep_research_settings
      tags:
      - Api
      summary: The deep research queue limits, the workspace's researchers, and the runs executing or queued right now. Admin only.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/chatai/deep-research/{deepresearchid}:
    post:
      operationId: post_api_chatai_deep_research_deepresearchid
      tags:
      - Api
      summary: Stop the deep research running in a conversation. Admin, write access.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: deepresearchid
        in: path
        required: true
        schema:
          type: string
      - name: chatUID
        in: query
        required: true
        schema:
          type: string
        description: UID of the chat whose deep research should be cancelled.
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at deepresearchId
  /api/chatai/tools/metrics:
    get:
      operationId: get_api_chatai_tools_metrics
      tags:
      - Api
      summary: Per-tool invocation metrics (counts, average latency, error rate). Admin only.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/code/history/all:
    get:
      operationId: get_api_code_history_all
      tags:
      - Api
      summary: The workspace change‑history timeline, newest first, backing Manage → Operate → Change History.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: from
        in: query
        required: false
        schema:
          type: string
      - name: to
        in: query
        required: false
        schema:
          type: string
      - name: skip
        in: query
        required: false
        schema:
          type: integer
      - name: take
        in: query
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/embeddings/{embeddingid}:
    get:
      operationId: get_api_embeddings_embeddingid
      tags:
      - Api
      summary: 'Reference for the embeddings surface in Curiosity Studio: how to encode text, query for similar nodes, and project embeddings
        for visualization.'
      description: List every node type that has at least one embedding index. Returns JSON mapping node types to indexUID arrays.
      x-source: https://docs.curiosity.ai/workspace-api/embeddings-api
      parameters:
      - name: embeddingid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiEmbeddingsEmbeddingidResponse'
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at embeddingId
    post:
      operationId: post_api_embeddings_embeddingid
      tags:
      - Api
      summary: 'Reference for the embeddings surface in Curiosity Studio: how to encode text, query for similar nodes, and project embeddings
        for visualization.'
      description: Run UMAP over the embeddings for visualization. Returns MessagePack containing the projected points.
      x-source: https://docs.curiosity.ai/workspace-api/embeddings-api
      parameters:
      - name: embeddingid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiEmbeddingsEmbeddingidRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiEmbeddingsEmbeddingidResponse'
      x-evidence:
        kind: documentation
        collapsed_from: 3 example path(s) differing only at embeddingId
  /api/endpoints/metrics:
    get:
      operationId: get_api_endpoints_metrics
      tags:
      - Api
      summary: Per-endpoint invocation metrics. Admin only.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/endpoints/run/similar-tickets:
    get:
      operationId: get_api_endpoints_run_similar_tickets
      tags:
      - Api
      summary: Custom endpoint invocation – Example — calling a custom endpoint.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/endpoints/run/{name}:
    post:
      operationId: post_api_endpoints_run_name
      tags:
      - Api
      summary: Custom endpoints
      x-source: https://docs.curiosity.ai/workspace-learning/07-apis-endpoints/03-custom-endpoints
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/endpoints/token/run/{name}:
    post:
      operationId: post_api_endpoints_token_run_name
      tags:
      - Api
      summary: Authentication
      x-source: https://docs.curiosity.ai/workspace-learning/07-apis-endpoints/02-authentication
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/graph/import-definitions:
    post:
      operationId: post_api_graph_import_definitions
      tags:
      - Api
      summary: Import definitions to a workspace; streams log and result events.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/graph/logs-files/download:
    get:
      operationId: get_api_graph_logs_files_download
      tags:
      - Api
      summary: Every match of a historical log search, streamed as one .log file.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: query
        in: query
        required: false
        schema:
          type: string
      - name: fileNames
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/graph/stats/{statid}:
    get:
      operationId: get_api_graph_stats_statid
      tags:
      - Api
      summary: The per‑node‑type / per‑edge‑type database counters, as the aligned table the server logs periodically.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: statid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at statId
  /api/groups/group:
    put:
      operationId: put_api_groups_group
      tags:
      - Api
      summary: Create or update a group (behaviour changes section).
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/groups/group/{groupuid}:
    put:
      operationId: put_api_groups_group_groupuid
      tags:
      - Api
      summary: Update a specific group identified by UID.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: groupuid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/groups/group/{groupuid}/delete:
    post:
      operationId: post_api_groups_group_groupuid_delete
      tags:
      - Api
      summary: Delete a specific group identified by UID.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: groupuid
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/groups/group/{groupuid}/users:
    get:
      operationId: get_api_groups_group_groupuid_users
      tags:
      - Api
      summary: GET /api/groups/group/{groupUID}/users
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: groupuid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/login/check:
    get:
      operationId: get_api_login_check
      tags:
      - Api
      summary: Verify a session JWT is still valid.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiLoginCheckResponse'
      x-evidence:
        kind: documentation
  /api/login/create:
    post:
      operationId: post_api_login_create
      tags:
      - Api
      summary: Authenticate via the login endpoint.
      x-source: https://docs.curiosity.ai/workspace-build/apis-and-customization/extensibility-and-apis/api-overview
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/login/password/{passwordid}:
    post:
      operationId: post_api_login_password_passwordid
      tags:
      - Api
      summary: Change the calling user's password.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: passwordid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiLoginPasswordPasswordidRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at passwordId
  /api/migrations/{migrationid}:
    post:
      operationId: post_api_migrations_migrationid
      tags:
      - Api
      summary: Migration jobs (admin, write access). POST /api/migrations/cancel cancels the run and waits up to 30 seconds for it to stop, so
        a caller can rewrite or reset the task straight afterwards.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: migrationid
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at migrationId
  /api/node/download/csv:
    post:
      operationId: post_api_node_download_csv
      tags:
      - Api
      summary: search results – the CSV / JSON Lines / Excel downloads (POST /api/node/download/csv, download/jsonl, download/zip).
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/node/download/synthetic/{syntheticid}:
    post:
      operationId: post_api_node_download_synthetic_syntheticid
      tags:
      - Api
      summary: Synthetic sample downloads (any signed-in, non-guest user). POST /api/node/download/synthetic/csv no longer take a baseURL query
        parameter — the export now carries only the generated nodes' own fields
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: syntheticid
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at syntheticId
  /api/node/many/{manyid}:
    post:
      operationId: post_api_node_many_manyid
      tags:
      - Api
      summary: 'User record field visibility – The projection applies to every generic reader: POST /api/node/many/field (which answers BLOCKED
        for a field the caller may not read).'
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: manyid
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 2 example path(s) differing only at manyId
  /api/node/query:
    post:
      operationId: post_api_node_query
      tags:
      - Api
      summary: 'User record field visibility – The projection applies to every generic reader: POST /api/node/query.'
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/node/{uid}:
    get:
      operationId: get_api_node_uid
      tags:
      - Api
      summary: 'User record field visibility – The projection applies to every generic reader: GET /api/node/{uid}.'
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: uid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/saml/acs:
    post:
      operationId: post_api_saml_acs
      tags:
      - Api
      summary: Assertion Consumer Service endpoint — the SAML callback.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/saml/createrequest/{providername}/{issuer}/{destination}:
    get:
      operationId: get_api_saml_createrequest_providername_issuer_destination
      tags:
      - Api
      summary: Builds an AuthnRequest for the configured provider.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: providername
        in: path
        required: true
        schema:
          type: string
      - name: issuer
        in: path
        required: true
        schema:
          type: string
      - name: destination
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/search/settings/llm:
    get:
      operationId: get_api_search_settings_llm
      tags:
      - Api
      summary: Which node types and search filters the built-in search tool exposes to an assistant, plus every filter available for the enabled
        node types. Admin only.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    put:
      operationId: put_api_search_settings_llm
      tags:
      - Api
      summary: Store the exposed node types and filters. An empty set restores the built-in defaults. Admin, write access.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutApiSearchSettingsLlmRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/search/synonyms/for:
    get:
      operationId: get_api_search_synonyms_for
      tags:
      - Api
      summary: The synonyms, alternates, blocked terms and suggested candidates for one term.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: token
        in: query
        required: false
        schema:
          type: string
        description: Authentication token (if required).
      - name: lang
        in: query
        required: false
        schema:
          type: string
        description: Language code.
      - name: tolerance
        in: query
        required: false
        schema:
          type: string
        description: Similarity tolerance (0.7–1.0).
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    put:
      operationId: put_api_search_synonyms_for
      tags:
      - Api
      summary: Store the Synonyms, Alternates and Blocked lists for one term — all three are required, send [] for unused ones.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: token
        in: query
        required: false
        schema:
          type: string
        description: Authentication token (if required).
      - name: lang
        in: query
        required: false
        schema:
          type: string
        description: Language code.
      - name: ignoreCase
        in: query
        required: false
        schema:
          type: string
        description: Whether to ignore case.
      - name: replace
        in: query
        required: false
        schema:
          type: string
        description: If false, merges with existing configuration.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutApiSearchSynonymsForRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/search/synonyms/list/for:
    get:
      operationId: get_api_search_synonyms_list_for
      tags:
      - Api
      summary: Every term that has synonyms configured for a language.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: lang
        in: query
        required: false
        schema:
          type: string
        description: Language code.
      - name: query
        in: query
        required: false
        schema:
          type: string
        description: Search term.
      - name: includeSynonyms
        in: query
        required: false
        schema:
          type: string
        description: Set to 1 to include synonym pairs.
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/{provider}/config:
    post:
      operationId: post_api_provider_config
      tags:
      - Api
      summary: Update the SSO config (admin only).
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: provider
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/{provider}/{id}:
    get:
      operationId: get_api_provider_id
      tags:
      - Api
      summary: Callback the identity provider redirects back to after the user authenticates.
      x-source: https://docs.curiosity.ai/workspace-api/rest-api
      parameters:
      - name: provider
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
        collapsed_from: 3 example path(s) differing only at id
  /chat/completions:
    post:
      operationId: post_chat_completions
      tags:
      - Chat
      summary: POST /chat/completions
      x-source: https://docs.curiosity.ai/workspace-api/llm-router
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostChatCompletionsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /install.sh:
    get:
      operationId: get_install_sh
      tags:
      - Install
      summary: Download install script
      description: Retrieves the install.sh script used to install Curiosity Studio.
      x-source: https://curiosity.ai/developers
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /models:
    get:
      operationId: get_models
      tags:
      - Models
      summary: GET /models
      x-source: https://docs.curiosity.ai/workspace-api/llm-router
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/messages:
    post:
      operationId: post_v1_messages
      tags:
      - Messages
      summary: POST /v1/messages
      x-source: https://docs.curiosity.ai/workspace-api/llm-router
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1MessagesRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/messages/count_tokens:
    post:
      operationId: post_v1_messages_count_tokens
      tags:
      - Messages
      summary: POST /v1/messages/count_tokens
      x-source: https://docs.curiosity.ai/workspace-api/llm-router
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/models:
    get:
      operationId: get_v1_models
      tags:
      - Models
      summary: GET /v1/models
      x-source: https://docs.curiosity.ai/workspace-api/llm-router
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/models/{id}:
    get:
      operationId: get_v1_models_id
      tags:
      - Models
      summary: GET /v1/models/{id}
      x-source: https://docs.curiosity.ai/workspace-api/llm-router
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiAdminAgentSessionsIdUploadsRequest:
      type: object
      properties:
        file:
          type: string
          description: One file to upload.
      required:
      - file
    PostApiAdminAgentSessionsIdUploadsResponse:
      type: object
      properties:
        UID:
          type: string
        Size:
          type: integer
        ContentType:
          type: string
    GetApiEmbeddingsEmbeddingidResponse:
      type: object
      properties:
        nodeType:
          type: object
          description: Maps to an array of indexUID strings.
    PostApiEmbeddingsEmbeddingidRequest:
      type: object
      properties:
        Dimensions:
          type: integer
        MaximumNumberOfPoints:
          type: integer
        NumberOfEpochsOverride:
          type: integer
      required:
      - Dimensions
      - MaximumNumberOfPoints
    PostApiEmbeddingsEmbeddingidResponse:
      type: object
      properties:
        ProjectedPoints:
          type: string
    GetApiLoginCheckResponse:
      type: object
      properties:
        user:
          type: object
          description: User info
    PostApiLoginPasswordPasswordidRequest:
      type: object
      properties:
        oldPassword:
          type: string
        newPassword:
          type: string
      required:
      - oldPassword
      - newPassword
    PutApiSearchSettingsLlmRequest:
      type: object
      properties:
        nodeTypes:
          type: array
          description: Node types to expose.
        filters:
          type: array
          description: Search filters to expose.
    PutApiSearchSynonymsForRequest:
      type: object
      properties:
        Synonyms:
          type: array
          description: List of synonym strings.
        Alternates:
          type: array
          description: List of alternate strings.
        Blocked:
          type: array
          description: List of blocked terms.
      required:
      - Synonyms
      - Alternates
      - Blocked
    PostChatCompletionsRequest:
      type: object
      properties:
        model:
          type: string
          description: Provider UID or display name
        messages:
          type: array
          description: Array of message objects with role and content
        stream:
          type: boolean
          description: Set true to get server‑sent events
      required:
      - model
      - messages
    PostV1MessagesRequest:
      type: object
      properties:
        model:
          type: string
          description: Provider UID
        max_tokens:
          type: integer
          description: Maximum number of tokens to generate
        messages:
          type: array
          description: Array of message objects with role and content
        stream:
          type: boolean
          description: Set true to get server‑sent events
      required:
      - model
      - messages
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api
- name: Chat
- name: Install
- name: Messages
- name: Models