Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

4chan API

Welcome to the documentation for 4chan's read-only JSON API, originally launched in September of 2012.


Getting started

Data from the 4chan API is exclusively accessible from a.4cdn.org, via either http:// or https:// protocols. a.4cdn.org serves JSON representations of posts made at 4chan.org and 4channel.org boards. All examples in the documentation for the 4chan API use https://.

CORS is supported from origins boards.4chan.org or boards.4channel.org, via http:// or https://. Requests are accepted when using the following HTTP request types:

Table of contents

Documentation PageDescription
Endpoints and Site DomainsA quick rundown of all 4chan API endpoints and site domains.
Media and Static ContentPaths and locations for static site content including custom spoiler images, country flags, capcodes and user submitted media
Archive.jsonDocumentation for the 4chan native archive and its JSON
Boards.jsonDocumentation for the 4chan board list and its attributes.
Catalog.jsonDocumentation for the JSON representation of the 4chan native catalog
Index endpointDocumentation for the JSON representaion of board index (main) pages
Thread endpointDocumentation for the JSON representation of specific 4chan threads.
Thread listDocumentation for the board threadlist and its brief stats

API Rules

  1. Do not make more than one request per second.
  2. Thread updating should be set to a minimum of 10 seconds, preferably higher.
  3. Use If-Modified-Since when doing your requests.
  4. Make API requests using the same protocol as the app. Only use SSL when a user is accessing your app over HTTPS.

API Terms of Service

  1. You may not use "4chan" in the title of your application, product, or service.
  2. You may not use the 4chan name, logo, or brand to promote your application, product, or service.
  3. You must disclose the source of the information shown by your application, product, or service as 4chan, and provide a link.
  4. You may not market your application, product, or service as being "official" in any way.
  5. You may not clone 4chan or its existing features/functionality. Example: Don't suck down our JSON, host it elsewhere, and throw ads around it.
  6. These terms are subject to change without notice.

To view a pretty-printed version of our thread, index, and catalog JSON, use JSONLint.

Still have questions or concerns? Open an issue or email api@4chan.org

About

Documentation for 4chan's read-only JSON API.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors