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.
openapi: 3.2.0
info:
title: Edgepedia Trees 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: Trees
paths:
/trees:
get:
summary: The trees on offer
responses:
'200':
description: The trees and their URLs.
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'
content:
application/json:
examples:
live:
summary: GET https://www.edgechat.ai/api/v1/trees
description: 'A live answer of 2026-10-07: arrays cut to two items, long text cut with an ellipsis.'
value:
trees:
- tree: topic
format: 1
url: https://www.edgechat.ai/api/v1/trees/topic
- tree: geo
format: 1
url: https://www.edgechat.ai/api/v1/trees/geo
shape: 'nodes: [[id, label, parent index, own articles]]; an id with a leading dot continues its parent''s id'
schema:
$ref: '#/components/schemas/ListTreesResponse'
operationId: listTrees
parameters:
- $ref: '#/components/parameters/fields'
tags:
- Trees
/trees/{tree}:
get:
summary: A tree whole (topic, or geo while the geography tree is live)
parameters:
- name: tree
in: path
required: true
schema:
type: string
enum:
- topic
- geo
example: topic
- $ref: '#/components/parameters/fields'
responses:
'200':
description: The tree, compact JSON.
content:
application/json:
schema:
$ref: '#/components/schemas/Tree'
examples:
live:
summary: GET https://www.edgechat.ai/api/v1/trees/topic
description: 'A live answer of 2026-10-07: arrays cut to two items, long text cut with an ellipsis.'
value:
tree: topic
format: 1
revision: concept-tt-v1.2
articles: 366998
nodes:
- - root
- Edgepedia
- - physical
- Physical world and mathematics
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'
'304':
description: Unchanged (If-None-Match).
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
'404':
description: No such tree.
headers:
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
operationId: getTree
tags:
- Trees
components:
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'
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:
ListTreesResponse:
type: object
properties:
trees:
type: array
items:
type: object
properties:
tree:
type: string
format:
type: integer
url:
type: string
shape:
type: string
description: 'Shape read from a live answer of 2026-10-07; fields may be added, never renamed or removed. Every field is optional: an answer carries the fields of its own branch.'
Tree:
type: object
properties:
tree:
type: string
enum:
- topic
- geo
format:
type: integer
const: 1
revision: {}
articles:
type: integer
nodes:
type: array
description: '[id, label, parent index, own articles]; an id beginning with a dot continues its parent''s id.'
items:
type: array
prefixItems:
- type: string
- type: string
- type: integer
- type: integer
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