# \#rest-api

**URL:** https://meta.discourse.org/tag/rest-api/330.md

[Latest](https://meta.discourse.org/latest.md) · [Categories](https://meta.discourse.org/categories.md) · [Tags](https://meta.discourse.org/tags.md)

---

## [API permission required for triggering topic timer](https://meta.discourse.org/t/api-permission-required-for-triggering-topic-timer/412695)

<div class="topic-metadata">

**Author:** [@Parker1090](https://meta.discourse.org/u/Parker1090)\
**Replies:** 1\
**Last updated:** [September 18, 2026, 10:03pm UTC](https://meta.discourse.org/t/api-permission-required-for-triggering-topic-timer/412695 "2026-09-18T22:03:52Z")

</div>

Hello! I’m trying to trigger a “close topic x days after last reply”, but I can’t seem to work out what permission is needed. I don’t really want to grant a full write permission. Specific endpoint: POST /t/{ID}/timer …

---

## [Does Discourse support any online multiplayer mini-games (e.g., Go, Gomoku, chess)?](https://meta.discourse.org/t/does-discourse-support-any-online-multiplayer-mini-games-e-g-go-gomoku-chess/389946)

<div class="topic-metadata">

**Author:** [@tom\_eric](https://meta.discourse.org/u/tom_eric)\
**Replies:** 5\
**Last updated:** [September 8, 2026, 4:00am UTC](https://meta.discourse.org/t/does-discourse-support-any-online-multiplayer-mini-games-e-g-go-gomoku-chess/389946 "2026-09-08T04:00:53Z")

</div>

Hi everyone, I’m wondering whether Discourse currently supports any kind of online multiplayer mini-games that forum members can play together (for example: Go/Weiqi, Gomoku, simple board games, etc.). I know Discourse…

---

## [API key scope to limit new topics to just one category?](https://meta.discourse.org/t/api-key-scope-to-limit-new-topics-to-just-one-category/269511)

<div class="topic-metadata">

**Author:** [@packman](https://meta.discourse.org/u/packman)\
**Replies:** 3\
**Last updated:** [August 31, 2026, 12:48pm UTC](https://meta.discourse.org/t/api-key-scope-to-limit-new-topics-to-just-one-category/269511 "2026-08-31T12:48:44Z")

</div>

Is it possible to create a granular API key that limits the key to only post in a specific category (or categories)? There’s a topic\_id parameter against the topics/write scope but I was hoping there might be a category\_…

---

## [API invite with group\_names param returns 403 for group-owner user unless they are admin](https://meta.discourse.org/t/api-invite-with-group-names-param-returns-403-for-group-owner-user-unless-they-are-admin/410808)

<div class="topic-metadata">

**Author:** [@Lew\_Grothe](https://meta.discourse.org/u/Lew_Grothe)\
**Replies:** 0\
**Last updated:** [August 24, 2026, 4:40pm UTC](https://meta.discourse.org/t/api-invite-with-group-names-param-returns-403-for-group-owner-user-unless-they-are-admin/410808 "2026-08-24T16:40:25Z")

</div>

Summary A non-admin user who is an owner of a Discourse group can successfully invite new members with that group assigned through the web UI invite dialog. The identical action via the REST API (/invites.json, Global-s…

---

## [Clip To Discourse Chrome Extension - now with User API capability!](https://meta.discourse.org/t/clip-to-discourse-chrome-extension-now-with-user-api-capability/392335)

<div class="topic-metadata">

**Author:** [@pacharanero](https://meta.discourse.org/u/pacharanero)\
**Replies:** 7\
**Last updated:** [August 19, 2026, 8:25am UTC](https://meta.discourse.org/t/clip-to-discourse-chrome-extension-now-with-user-api-capability/392335 "2026-08-19T08:25:43Z")

</div>

Dear Discourse Community, here’s my little :wrapped\_gift: Christmas present :christmas\_tree: to you all. It’s simple but useful, and was built purely because I wanted it. Inspired by Simon Willison’s great blog about us…

---

## [User API keys specification](https://meta.discourse.org/t/user-api-keys-specification/48536)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 69\
**Last updated:** [September 22, 2025, 10:30am UTC](https://meta.discourse.org/t/user-api-keys-specification/48536 "2025-09-22T10:30:43Z")

</div>

Discourse contains a system for generating API keys per user if a very specific protocol is followed. This feature facilitates “application” access to Discourse instances without needing to involve moderators. High le…

---

## [Feature request: Allow safe API access to site settings without an admin-level key](https://meta.discourse.org/t/feature-request-allow-safe-api-access-to-site-settings-without-an-admin-level-key/408523)

<div class="topic-metadata">

**Author:** [@philh](https://meta.discourse.org/u/philh)\
**Replies:** 9\
**Last updated:** [July 27, 2026, 8:03pm UTC](https://meta.discourse.org/t/feature-request-allow-safe-api-access-to-site-settings-without-an-admin-level-key/408523 "2026-07-27T20:03:59Z")

</div>

As I understand it, requiring admin access for /site/settings.json and some information in /site.json is expected Discourse behavior. Discussion Bridge and similar integrations need a limited set of site configuration i…

---

## [Confirming API Access to Authoring Limit Site Settings](https://meta.discourse.org/t/confirming-api-access-to-authoring-limit-site-settings/407937)

<div class="topic-metadata">

**Author:** [@philh](https://meta.discourse.org/u/philh)\
**Replies:** 4\
**Last updated:** [July 25, 2026, 11:07pm UTC](https://meta.discourse.org/t/confirming-api-access-to-authoring-limit-site-settings/407937 "2026-07-25T23:07:34Z")

</div>

I’m working on an integration that publishes and syncs companion topics into Discourse via the API. For setup diagnostics, I’d like to read the forum’s current authoring limits so the integration can preflight content be…

---

## [API granular scope to list all badges](https://meta.discourse.org/t/api-granular-scope-to-list-all-badges/405734)

<div class="topic-metadata">

**Author:** [@TimMOz](https://meta.discourse.org/u/TimMOz)\
**Replies:** 2\
**Last updated:** [June 22, 2026, 11:20pm UTC](https://meta.discourse.org/t/api-granular-scope-to-list-all-badges/405734 "2026-06-22T23:20:36Z")

</div>

I am looking for an api-key granular scope to list all badges? (Not a user’s badges, or individual badge details.) Currently it seems you can only list all badges if (a) the api-key has a global scope, or (b) you disabl…

---

## [The AI Tools Test Runner internally enables SSL for http URLs](https://meta.discourse.org/t/der-ai-tools-test-runner-macht-bei-http-urls-intern-ssl/404705)

<div class="topic-metadata">

**Author:** [@anon24023246](https://meta.discourse.org/u/anon24023246)\
**Replies:** 1\
**Last updated:** [June 8, 2026, 10:14pm UTC](https://meta.discourse.org/t/der-ai-tools-test-runner-macht-bei-http-urls-intern-ssl/404705 "2026-06-08T22:14:44Z")

</div>

Hello, I wanted to test the following AI tool: /\* eslint-disable no-unused-vars \*/ function invoke(params) { const target = "http://stable-diffusion:7860/"; try { const r = http.get(target); return { ok: t...

---

## [Need to create chat channels via API](https://meta.discourse.org/t/need-to-create-chat-channels-via-api/403979)

<div class="topic-metadata">

**Author:** [@ARK-Helena](https://meta.discourse.org/u/ARK-Helena)\
**Replies:** 3\
**Last updated:** [May 28, 2026, 10:36am UTC](https://meta.discourse.org/t/need-to-create-chat-channels-via-api/403979 "2026-05-28T10:36:15Z")

</div>

Hi, Our app hosts hundreds of communities and each of them need a chat channel. Currently we can automatically create categories and user groups via the API which is great, but we are forced to create every chat channel…

---

## [API calls fail due issue with main\_user\_record silenced\_till](https://meta.discourse.org/t/api-calls-fail-due-issue-with-main-user-record-silenced-till/402752)

<div class="topic-metadata">

**Author:** [@torgeirl](https://meta.discourse.org/u/torgeirl)\
**Replies:** 3\
**Last updated:** [May 13, 2026, 6:47am UTC](https://meta.discourse.org/t/api-calls-fail-due-issue-with-main-user-record-silenced-till/402752 "2026-05-13T06:47:09Z")

</div>

Description When fetching active users with the API some pages of \`/admin/users/list/active.json\` return a HTTP 500. Workaround If the problematic pages are skipped the other pages can be fetched without problem. Err…

---

## [ICS → Discourse Importer](https://meta.discourse.org/t/ics-discourse-importer/381646)

<div class="topic-metadata">

**Author:** [@Ethsim2](https://meta.discourse.org/u/Ethsim2)\
**Replies:** 19\
**Last updated:** [April 26, 2026, 7:34am UTC](https://meta.discourse.org/t/ics-discourse-importer/381646 "2026-04-26T07:34:50Z")

</div>

I’ve built a small utility that continuously syncs events from an iCalendar (ICS) feed into a Discourse category via the REST API. This isn’t a full Discourse plugin — it runs alongside your Discourse install — so it be…

---

## [Improving Discourse API documentation for building fully custom frontend community](https://meta.discourse.org/t/improving-discourse-api-documentation-for-building-fully-custom-frontend-community/401236)

<div class="topic-metadata">

**Author:** [@Mohamed\_Ahmed2](https://meta.discourse.org/u/Mohamed_Ahmed2)\
**Replies:** 1\
**Last updated:** [April 22, 2026, 1:15pm UTC](https://meta.discourse.org/t/improving-discourse-api-documentation-for-building-fully-custom-frontend-community/401236 "2026-04-22T13:15:05Z")

</div>

Hi everyone :waving\_hand: I’ve been building a custom frontend using Discourse as a headless backend (Next.js-based architecture), and I’d like to share some practical gaps I’ve encountered in the current API design fro…

---

## [Delete Draft post from the API - getting not\_found error](https://meta.discourse.org/t/delete-draft-post-from-the-api-getting-not-found-error/401220)

<div class="topic-metadata">

**Author:** [@nitinkg](https://meta.discourse.org/u/nitinkg)\
**Replies:** 1\
**Last updated:** [April 22, 2026, 10:32am UTC](https://meta.discourse.org/t/delete-draft-post-from-the-api-getting-not-found-error/401220 "2026-04-22T10:32:31Z")

</div>

Hi, I’m trying to delete a draft using the API: DELETE /drafts/{draft\_key}.json The draft exists (verified via GET /drafts.json) and I’m using the correct draft\_key and sequence. API Request (Postman / backend) DELET…

---

## [API error 500](https://meta.discourse.org/t/topic/401118)

<div class="topic-metadata">

**Author:** [@shixiaochi](https://meta.discourse.org/u/shixiaochi)\
**Replies:** 2\
**Last updated:** [April 21, 2026, 4:27pm UTC](https://meta.discourse.org/t/topic/401118 "2026-04-21T16:27:59Z")

</div>

What are the common causes of a 500 error when calling the /discourse-ai/embeddings/semantic-search endpoint?

---

## [REST API Python Scripting - Much overlap with Discourse-specific concepts](https://meta.discourse.org/t/rest-api-python-scripting-much-overlap-with-discourse-specific-concepts/400352)

<div class="topic-metadata">

**Author:** [@Ethsim2](https://meta.discourse.org/u/Ethsim2)\
**Replies:** 1\
**Last updated:** [April 9, 2026, 9:09pm UTC](https://meta.discourse.org/t/rest-api-python-scripting-much-overlap-with-discourse-specific-concepts/400352 "2026-04-09T21:09:31Z")

</div>

Hello, I’m looking for an avid Python developer to support my efforts to duplicate complex topics from my Personal to my University-wide Discourse forum. So far, i have attempted using Generative AI to migrate replies …

---

## [API call for Featured Topics](https://meta.discourse.org/t/api-call-for-featured-topics/399867)

<div class="topic-metadata">

**Author:** [@watsonbriant](https://meta.discourse.org/u/watsonbriant)\
**Replies:** 1\
**Last updated:** [April 3, 2026, 12:17pm UTC](https://meta.discourse.org/t/api-call-for-featured-topics/399867 "2026-04-03T12:17:04Z")

</div>

Is there a way to do a GET request to pull a forum’s featured topics? I see in the API docs that there’s ways to pull “the latest topics” or “a specific topic”, but is there a native way to pull featured topics?

---

## [API scope \`all-users\` not working anymore](https://meta.discourse.org/t/api-scope-all-users-not-working-anymore/399597)

<div class="topic-metadata">

**Author:** [@darkpixlz](https://meta.discourse.org/u/darkpixlz)\
**Replies:** 0\
**Last updated:** [March 30, 2026, 9:25pm UTC](https://meta.discourse.org/t/api-scope-all-users-not-working-anymore/399597 "2026-03-30T21:25:30Z")

</div>

I have this snip of Python, which previously generated a user and had them like a post. i = i + extra pw = nanoid.generate(size=150) name = f"User{nanoid.generate(size=5, alphabet='abcdefghijklmn…

---

## [Create a Data Explorer query using the API](https://meta.discourse.org/t/create-a-data-explorer-query-using-the-api/394388)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 3\
**Last updated:** [March 29, 2026, 7:46pm UTC](https://meta.discourse.org/t/create-a-data-explorer-query-using-the-api/394388 "2026-03-29T19:46:03Z")

</div>

Create a Data Explorer query with the API :bookmark: This how-to guide explains how to create a Data Explorer query using the Discourse API. :person\_raising\_hand: Required user level: Administrator Prerequisites B…

---

## [An error is occurring on the page where I am creating the API](https://meta.discourse.org/t/an-error-is-occurring-on-the-page-where-i-am-creating-the-api/398948)

<div class="topic-metadata">

**Author:** [@ばこん](https://meta.discourse.org/u/%E3%81%B0%E3%81%93%E3%82%93)\
**Replies:** 2\
**Last updated:** [March 21, 2026, 8:12am UTC](https://meta.discourse.org/t/an-error-is-occurring-on-the-page-where-i-am-creating-the-api/398948 "2026-03-21T08:12:38Z")

</div>

How can I rectify this issue? I am using the latest version. ActionController::UrlGenerationError (No route matches {}, missing required keys: \[:dumbcourse\_base\_path\]) app/models/api\_key\_scope.rb:310:in 'block in …

---

## [Discourse REST API Documentation](https://meta.discourse.org/t/discourse-rest-api-documentation/22706)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [December 1, 2014, 2:42pm UTC](https://meta.discourse.org/t/discourse-rest-api-documentation/22706 "2014-12-01T14:42:20Z")

</div>

Discourse API Please view the Discourse API Documentation site for detailed info: https://docs.discourse.org :information\_source: Authentication API requests must use HTTP header based authentication. Pass your Api-…

---

## [Reverse engineer the Discourse API](https://meta.discourse.org/t/reverse-engineer-the-discourse-api/20576)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [September 29, 2014, 1:22am UTC](https://meta.discourse.org/t/reverse-engineer-the-discourse-api/20576 "2014-09-29T01:22:40Z")

</div>

Discourse is backed by a complete JSON api. Anything you can do on the site you can also do using the JSON api. The API is documented at docs.discourse.org. You can also use the discourse\_api Ruby gem as a client librar…

---

## [Use the Discourse API ruby gem](https://meta.discourse.org/t/use-the-discourse-api-ruby-gem/17587)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [July 15, 2014, 3:29am UTC](https://meta.discourse.org/t/use-the-discourse-api-ruby-gem/17587 "2014-07-15T03:29:15Z")

</div>

So you want to use Discourse API? Great! Let’s get started. Set up Discourse development environment Set up Discourse development environment using our Windows, macOS or Ubuntu guide. Clone Discourse API Gem Now that…

---

## [Has something changed in the data explorer? Can't get query via API](https://meta.discourse.org/t/has-something-changed-in-the-data-explorer-cant-get-query-via-api/398172)

<div class="topic-metadata">

**Author:** [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Replies:** 8\
**Last updated:** [March 11, 2026, 5:46pm UTC](https://meta.discourse.org/t/has-something-changed-in-the-data-explorer-cant-get-query-via-api/398172 "2026-03-11T17:46:37Z")

</div>

This stopped working two days ago for a hosted customer: HTTP\_STATUS=$(curl -s -o /tmp/discourse\_response.json -w "%{http\_code}" \\ -X POST "https://HOSTNAME/admin/plugins/discourse-data-explorer/queries/3/run" \\ …

---

## [Creating a system to move topics based on given criteria such as a timestamp](https://meta.discourse.org/t/creating-a-system-to-move-topics-based-on-given-criteria-such-as-a-timestamp/397384)

<div class="topic-metadata">

**Author:** [@jdc20181](https://meta.discourse.org/u/jdc20181)\
**Replies:** 6\
**Last updated:** [March 3, 2026, 3:23am UTC](https://meta.discourse.org/t/creating-a-system-to-move-topics-based-on-given-criteria-such-as-a-timestamp/397384 "2026-03-03T03:23:08Z")

</div>

Referencing the AI Bot integration see Discourse AI - AI bot - Documentation / Site Management - Discourse Meta Extra note/edit: I am self hosting Short Version if you don’t want to read the whole story: I want to use …

---

## [Upload Deletion via API](https://meta.discourse.org/t/upload-deletion-via-api/396741)

<div class="topic-metadata">

**Author:** [@markersocial](https://meta.discourse.org/u/markersocial)\
**Replies:** 5\
**Last updated:** [February 25, 2026, 3:56pm UTC](https://meta.discourse.org/t/upload-deletion-via-api/396741 "2026-02-25T15:56:19Z")

</div>

I reached for it, but it appears that an API endpoint for deleting an upload doesn’t exist. Posting it here, because I was not able to find any mentions or suggestions for this, the closest I found was: API: a scope w…

---

## [Run Data Explorer queries with the Discourse API](https://meta.discourse.org/t/run-data-explorer-queries-with-the-discourse-api/120063)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 14\
**Last updated:** [May 6, 2025, 5:15pm UTC](https://meta.discourse.org/t/run-data-explorer-queries-with-the-discourse-api/120063 "2025-05-06T17:15:01Z")

</div>

:bookmark: This guide explains how to use the Discourse API to create, run, and manage queries with the Data Explorer plugin. :person\_raising\_hand: Required user level: Administrator Virtually any action that can b…

---

## [Mark posts in topic as "read'](https://meta.discourse.org/t/mark-posts-in-topic-as-read/394852)

<div class="topic-metadata">

**Author:** [@kittenwater](https://meta.discourse.org/u/kittenwater)\
**Replies:** 15\
**Last updated:** [February 8, 2026, 1:31am UTC](https://meta.discourse.org/t/mark-posts-in-topic-as-read/394852 "2026-02-08T01:31:27Z")

</div>

I tried to reverse engineer the site by sending POST requests to “https://{hostUrl}/topics/timings” with content-type, csrf token, and user-agent. Here is what the body (json) looks like: payload = { "topic\_id": topi…

---

## [Can I create a new query in Data Explorer using API?](https://meta.discourse.org/t/can-i-create-a-new-query-in-data-explorer-using-api/264529)

<div class="topic-metadata">

**Author:** [@utku](https://meta.discourse.org/u/utku)\
**Replies:** 2\
**Last updated:** [January 26, 2026, 11:34pm UTC](https://meta.discourse.org/t/can-i-create-a-new-query-in-data-explorer-using-api/264529 "2026-01-26T23:34:16Z")

</div>

I can run the existing queries with or without parameters. I tried some POST calls to create a new query in Data Explorer without using the Admin console, but failed. Is there a method to create/delete a query in Data Ex…

[Next page](https://meta.discourse.org/tag/rest-api/330.md?match_all_tags=true&page=1&tags%5B%5D=rest-api)
