openapi: 3.0.3
info:
title: 4chan Read-Only JSON Archive Threadlist API
description: 'Read-only JSON API for the 4chan and 4channel imageboards, originally launched in September 2012. All endpoints are served as static JSON documents from `a.4cdn.org` over `http://` or `https://`. The API exposes only the public, anonymous read surface of the site: board metadata, board catalogs, board threadlists, archive listings, board index pages, and individual thread documents.
There is no authentication, no posting, and no per-user write surface. Only `GET`, `HEAD`, and `OPTIONS` are accepted. CORS is enabled only for origins `boards.4chan.org` and `boards.4channel.org`.
Clients MUST send no more than one request per second, MUST set thread-polling intervals to at least 10 seconds (preferably higher), and SHOULD use `If-Modified-Since` so that unchanged threads return `304 Not Modified`.'
version: '2026-05-28'
termsOfService: https://github.com/4chan/4chan-API#api-terms-of-service
contact:
name: 4chan API
email: api@4chan.org
url: https://github.com/4chan/4chan-API
license:
name: 4chan API Terms of Service
url: https://github.com/4chan/4chan-API#api-terms-of-service
x-generated-from: documentation
x-source-url: https://github.com/4chan/4chan-API
x-last-validated: '2026-05-28'
servers:
- url: https://a.4cdn.org
description: Production 4chan read-only JSON API (HTTPS).
- url: http://a.4cdn.org
description: Production 4chan read-only JSON API (HTTP, legacy clients only).
tags:
- name: Threadlist
description: Per-board summary list of every live thread (id, last-modified, reply count) grouped by index page.
paths:
/{board}/threads.json:
get:
operationId: getBoardThreadlist
summary: 4chan Get Board Threadlist
description: Returns a compact list of every live thread on the given board grouped by index page. Each thread entry contains only the OP number (`no`), the last-modified UNIX timestamp, and the reply count. Use this endpoint to detect new and updated threads cheaply; fetch the full thread or catalog only when `last_modified` changes.
tags:
- Threadlist
parameters:
- $ref: '#/components/parameters/BoardPath'
responses:
'200':
description: Successful response. Returns the threadlist grouped by index page.
content:
application/json:
schema:
$ref: '#/components/schemas/ThreadlistResponse'
examples:
GetBoardThreadlist200Example:
summary: Default getBoardThreadlist 200 response
x-microcks-default: true
value:
- page: 1
threads:
- false: 570368
last_modified: 1546294897
replies: 2
- false: 574933
last_modified: 1566530948
replies: 228
- page: 2
threads:
- false: 568362
last_modified: 1566367619
replies: 55
'304':
description: Not Modified.
'404':
description: Board not found.
'503':
description: Service Unavailable.
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
parameters:
BoardPath:
name: board
in: path
required: true
description: Board directory short name (e.g. `a`, `b`, `g`, `pol`, `po`, `v`). The full list of valid values is the `board` field on each entry in `/boards.json`.
schema:
type: string
pattern: ^[a-z0-9]+$
minLength: 1
maxLength: 8
example: po
example: po
schemas:
ThreadlistResponse:
type: array
description: Top-level response from `/{board}/threads.json` — an array of pages, each with its threadlist.
items:
$ref: '#/components/schemas/ThreadlistPage'
ThreadlistPage:
type: object
description: One index page in a threadlist response.
required:
- page
- threads
properties:
page:
type: integer
description: Index page number this entry belongs to.
example: 1
threads:
type: array
description: Compact thread entries on this page.
items:
$ref: '#/components/schemas/ThreadlistEntry'
ThreadlistEntry:
type: object
description: Compact thread summary used in the per-board threadlist.
required:
- 'no'
- last_modified
- replies
properties:
'no':
type: integer
description: Thread OP ID.
example: 570368
last_modified:
type: integer
description: UNIX timestamp the thread was last modified.
example: 1546294897
replies:
type: integer
description: Number of replies in the thread.
example: 2