CanonicAI Answers API

The Answers API from CanonicAI — 5 operation(s) for answers.

Operations 5

GET /answers/index.json List every published answer ({count, answers[]} of summaries; fetch… #
GET /answers/{slug}.json One answer by slug (static JSON twin) #
GET /api/v1/answers List answer summaries (REST twin of list_answers) #
GET /api/v1/answers/search Search answers (REST twin of search_answers) #
GET /api/v1/answers/{slug} One answer by slug (REST twin of get_answer) #

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/canonicai-com:canonicai-com-answers-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

canonicai-com-answers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CanonicAI — public + Canons feed Answers API
  version: 1.1.0
  description: Free, read-only, machine-readable answers and domain canons from the CanonicAI corpus-to-dataset engine, each with citations into the engine's own documentation. Served as static JSON and via hosted MCP/REST at /api/mcp, /api/v1/answers, and /api/v1/canons. See /.well-known/mcp.json.
  contact:
    name: CanonicAI
    url: https://canonicai.com
servers:
- url: https://canonicai.com
tags:
- name: Answers
paths:
  /answers/index.json:
    get:
      operationId: listAnswers
      summary: List every published answer ({count, answers[]} of summaries; fetch…
      responses:
        '200':
          description: Array of Answer records
          content:
            application/json:
              schema:
                type: object
                required:
                - count
                - answers
                properties:
                  count:
                    type: integer
                  answers:
                    type: array
                    items:
                      $ref: '#/components/schemas/AnswerSummary'
      tags:
      - Answers
  /answers/{slug}.json:
    get:
      operationId: getAnswerStatic
      summary: One answer by slug (static JSON twin)
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Answer record
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Answer'
        '404':
          description: Unknown slug
      tags:
      - Answers
  /api/v1/answers:
    get:
      operationId: listAnswersApi
      summary: List answer summaries (REST twin of list_answers)
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 0
      - name: offset
        in: query
        schema:
          type: integer
          minimum: 0
      responses:
        '200':
          description: Answer summary list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerListResponse'
      tags:
      - Answers
  /api/v1/answers/search:
    get:
      operationId: searchAnswersApi
      summary: Search answers (REST twin of search_answers)
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 0
      responses:
        '200':
          description: Ranked search matches
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerSearchResponse'
      tags:
      - Answers
  /api/v1/answers/{slug}:
    get:
      operationId: getAnswerApi
      summary: One answer by slug (REST twin of get_answer)
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Answer record with url
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerWithUrl'
        '404':
          description: Unknown slug
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
      tags:
      - Answers
components:
  schemas:
    AnswerSearchResponse:
      type: object
      required:
      - query
      - count
      - matches
      properties:
        query:
          type: string
        count:
          type: integer
        matches:
          type: array
          items:
            $ref: '#/components/schemas/AnswerSearchMatch'
    AnswerWithUrl:
      allOf:
      - $ref: '#/components/schemas/Answer'
      - type: object
        required:
        - url
        properties:
          url:
            type: string
            format: uri
    Answer:
      type: object
      description: Answer contract v0
      required:
      - id
      - slug
      - home
      - question
      - answer
      - citations
      - status
      properties:
        id:
          type: string
        slug:
          type: string
        home:
          type: string
          const: canonicai
        question:
          type: string
        shortAnswer:
          type: string
        answer:
          type: string
        canonicalUrl:
          type: string
          format: uri
        citations:
          type: array
          minItems: 1
          items:
            type: object
            properties:
              libraryId:
                type: string
              title:
                type: string
              locator:
                type: string
              claim:
                type: string
        sourcePackets:
          type: array
          items:
            type: object
        status:
          type: string
          enum:
          - published
        generatedBy:
          type: object
    AnswerListResponse:
      type: object
      required:
      - count
      - answers
      properties:
        count:
          type: integer
        answers:
          type: array
          items:
            $ref: '#/components/schemas/AnswerSummary'
    AnswerSearchMatch:
      allOf:
      - $ref: '#/components/schemas/AnswerSummary'
      - type: object
        required:
        - score
        properties:
          score:
            type: integer
          shortAnswer:
            type: string
    NotFoundError:
      type: object
      required:
      - code
      - slug
      - message
      properties:
        code:
          type: string
          enum:
          - not_found
        slug:
          type: string
        message:
          type: string
        validSlugCount:
          type: integer
    AnswerSummary:
      type: object
      required:
      - slug
      - id
      - question
      - url
      - jsonUrl
      - citationCount
      properties:
        slug:
          type: string
        id:
          type: string
        question:
          type: string
        url:
          type: string
          format: uri
        jsonUrl:
          type: string
          format: uri
        citationCount:
          type: integer