EdgeChat Topics API
The Topics API from EdgeChat — 2 operation(s) for topics.
The Topics API from EdgeChat — 2 operation(s) for topics.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/edgechat-ai:edgechat-ai-topics-api"
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.
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: 3.2.0
info:
title: Edgepedia Topics API
version: '1'
description: Read-only JSON access to the Edgepedia encyclopedia articles. Keyless. 600 requests a minute and 100,000 a day per IP address (429 with Retry-After past that). Free with credit under the Edgepedia Community License 1.0; AI training is open to everyone.
license:
name: Edgepedia Community License 1.0
url: https://www.edgechat.ai/edgepedia/license
contact:
url: https://www.edgechat.ai/developers
name: EdgeChat
email: olivia.jin@biostate.ai
x-logo:
url: https://www.edgechat.ai/assets/edgechat-chestnut-orange-logo-v2.png
altText: EdgeChat
backgroundColor: '#FFFFFF'
href: https://www.edgechat.ai/developers
x-origin:
- format: openapi
version: '3.1'
url: https://www.edgechat.ai/openapi.json
servers:
- url: https://www.edgechat.ai/api/v1
tags:
- name: Topics
paths:
/topics:
get:
operationId: listTopics
summary: The top of the topic tree
responses:
'200':
description: Top-level topics
content:
application/json:
schema:
$ref: '#/components/schemas/ListTopicsResponse'
examples:
live:
summary: GET https://www.edgechat.ai/api/v1/topics
description: 'A live answer of 2026-10-07: arrays cut to two items, long text cut with an ellipsis.'
value:
topics:
- id: physical
label: Physical world and mathematics
articles: 23823
api_url: https://www.edgechat.ai/api/v1/topics/physical
- id: life
label: Life and health
articles: 44498
api_url: https://www.edgechat.ai/api/v1/topics/life
license:
name: Edgepedia Community License 1.0
url: https://www.edgechat.ai/edgepedia/license
summary: Free with credit, commercial use included. AI training is open to everyone. For other uses, organizations over USD 100M in revenue or 100M monthly users license separately.
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
ETag:
$ref: '#/components/headers/ETag'
Last-Modified:
$ref: '#/components/headers/Last-Modified'
Content-Digest:
$ref: '#/components/headers/Content-Digest'
Edgepedia-Corpus-Version:
$ref: '#/components/headers/Edgepedia-Corpus-Version'
'400':
$ref: '#/components/responses/UnknownParameter'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'429':
description: An error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
RateLimit:
$ref: '#/components/headers/RateLimit'
Retry-After:
description: Seconds to wait before the next request.
schema:
type: integer
'503':
description: Briefly unavailable; try again
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
parameters:
- $ref: '#/components/parameters/fields'
tags:
- Topics
/topics/{id}:
get:
operationId: getTopic
summary: 'One topic: its path, sub-topics, and articles (30 to a page)'
parameters:
- name: id
in: path
required: true
schema:
type: string
description: A topic id from /topics, a topic's `children`, or an article's `topic_path`. Topic ids can change when the tree is revised.
example: life.animals.mammals.monotremes-marsupials
- name: page
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number, from 1 (30 articles to a page).
- name: format
in: query
schema:
type: string
enum:
- json
- mermaid
- $ref: '#/components/parameters/fields'
responses:
'200':
description: The topic
content:
application/json:
schema:
$ref: '#/components/schemas/GetTopicResponse'
examples:
live:
summary: GET https://www.edgechat.ai/api/v1/topics/life.animals.mammals.monotremes-marsupials
description: 'A live answer of 2026-10-07: arrays cut to two items, long text cut with an ellipsis.'
value:
id: life.animals.mammals.monotremes-marsupials
label: Monotremes and marsupials
path:
- id: life
label: Life and health
api_url: https://www.edgechat.ai/api/v1/topics/life
- id: life.animals
label: Animals
api_url: https://www.edgechat.ai/api/v1/topics/life.animals
articles: 31
children: []
page: 1
pages: 2
results:
- id: epn6gdvets
slug: bandicoot
title: Bandicoot
topic: Life and health
excerpt: Bandicoots are a group of about 20 species of small to medium-sized, nocturnal marsupial omnivores in the order Peramelemorphia, endemic to the Australia–New Guinea region, some endangered.
snippet: Bandicoots are a group of about 20 species of small to medium-sized, nocturnal marsupial omnivores in the order Peramelemorphia, endemic to the Australia–New Guinea region, some endangered.
node: life.animals.mammals.monotremes-marsupials
url: https://www.edgechat.ai/bandicoot
markdown_url: https://www.edgechat.ai/bandicoot.md
api_url: https://www.edgechat.ai/api/v1/articles/bandicoot
- id: epdg91k83d
slug: common-brushtail-possum
title: Common brushtail possum
topic: Life and health
excerpt: The common brushtail possum (Trichosurus vulpecula) is a nocturnal, semiarboreal marsupial native to Australia, introduced to New Zealand in the 1830s, where it became a major pest.
snippet: The common brushtail possum (Trichosurus vulpecula) is a nocturnal, semiarboreal marsupial native to Australia, introduced to New Zealand in the 1830s, where it became a major pest.
node: life.animals.mammals.monotremes-marsupials
url: https://www.edgechat.ai/common-brushtail-possum
markdown_url: https://www.edgechat.ai/common-brushtail-possum.md
api_url: https://www.edgechat.ai/api/v1/articles/common-brushtail-possum
license:
name: Edgepedia Community License 1.0
url: https://www.edgechat.ai/edgepedia/license
summary: Free with credit, commercial use included. AI training is open to everyone. For other uses, organizations over USD 100M in revenue or 100M monthly users license separately.
text/plain:
schema:
type: string
description: 'format=mermaid: a Mermaid diagram as text.'
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
ETag:
$ref: '#/components/headers/ETag'
Last-Modified:
$ref: '#/components/headers/Last-Modified'
Content-Digest:
$ref: '#/components/headers/Content-Digest'
Edgepedia-Corpus-Version:
$ref: '#/components/headers/Edgepedia-Corpus-Version'
'301':
description: The topic id was renamed or merged in a newer topic tree. `Location` names its new id (`/api/v1/topics/{new id}`, keeping `page`); follow it.
headers:
Location:
schema:
type: string
description: The topic's current address.
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
'400':
$ref: '#/components/responses/UnknownParameter'
'404':
description: An error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'429':
description: An error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
RateLimit:
$ref: '#/components/headers/RateLimit'
Retry-After:
description: Seconds to wait before the next request.
schema:
type: integer
'503':
description: Briefly unavailable; try again
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
tags:
- Topics
components:
responses:
MethodNotAllowed:
description: '`method_not_allowed`: the API is read-only; use GET or HEAD (OPTIONS answers CORS preflights). The `Allow` header lists the methods.'
headers:
Allow:
schema:
type: string
description: GET, HEAD, OPTIONS
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
UnknownParameter:
description: '`unknown_parameter`: the request carries a query parameter this route does not read (or one given twice). Each route reads only the parameters listed for it.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
RateLimit-Policy:
description: 'The limiter''s two windows, per IP address and per server instance (IETF RateLimit header fields): 600 requests a minute and 100,000 a day.'
schema:
type: string
example: '"minute";q=600;w=60, "day";q=100000;w=86400'
RateLimit:
description: 'On a 429 only: the window that was exceeded, no requests remaining (r=0), and the seconds until it resets (t).'
schema:
type: string
example: '"minute";r=0;t=42'
Edgepedia-Corpus-Version:
description: The corpus release that answered.
schema:
type: string
Content-Digest:
description: sha-256 of the body (RFC 9530).
schema:
type: string
Last-Modified:
description: The corpus release date (informational; only the ETag validates).
schema:
type: string
ETag:
description: A hash of the body; send it back as If-None-Match for a 304.
schema:
type: string
schemas:
ListTopicsResponse:
type: object
properties:
topics:
type: array
items:
$ref: '#/components/schemas/Topic'
license:
$ref: '#/components/schemas/License'
GetTopicResponse:
type: object
properties:
id:
type: string
label:
type: string
description: 'The topic''s name. An alphabetical part of a big topic carries that topic''s name first: "Countries and territories: A to Ga".'
path:
type: array
items:
$ref: '#/components/schemas/Topic'
articles:
type: integer
description: Articles in this topic and every topic under it.
children:
type: array
items:
$ref: '#/components/schemas/Topic'
page:
type: integer
pages:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/ArticleSummary'
description: Articles in this topic and every topic under it, 30 to a page.
license:
$ref: '#/components/schemas/License'
ArticleSummary:
type: object
properties:
id:
type: string
slug:
type: string
title:
type: string
topic:
type:
- string
- 'null'
description: The top-level branch of the topic tree the article is under. Its own topic is the last entry of the article's `topic_path`.
excerpt:
type: string
description: The corpus snippet when available, otherwise the article opening as plain text. Older listing excerpts may end in an ellipsis (…).
url:
type: string
format: uri
markdown_url:
type: string
format: uri
api_url:
type: string
format: uri
snippet:
type: string
description: Optional corpus-authored summary, separate from the article opening. Present on corpus-v1.5 articles and their preview results.
node:
type: string
description: Current concept-tree node of the article, when available. May change when the corpus tree is revised.
required:
- id
- slug
- title
- excerpt
- url
- markdown_url
- api_url
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
hint:
type: string
next:
type: string
format: uri
did_you_mean:
type: array
items:
type: object
properties:
id:
type: string
slug:
type: string
title:
type: string
api_url:
type: string
required:
- code
- message
required:
- error
Topic:
type: object
properties:
id:
type: string
label:
type: string
articles:
type: integer
api_url:
type: string
format: uri
required:
- id
- label
- api_url
License:
type: object
properties:
name:
type: string
url:
type: string
format: uri
summary:
type: string
spdx:
type: string
example: LicenseRef-Edgepedia-Community-1.0
required:
- name
- url
parameters:
fields:
name: fields
in: query
required: false
description: 'Comma-separated keys: each result (or the answer, when it has no results) keeps only these.'
schema:
type: string