NSNiceSharing OpenAPI YAML ↓
NiceSharing platform

One forum network.
As many front doors as you need.

NiceSharing is shared community infrastructure for independent websites. Use it as a hosted forum, embed it into your own product, or consume it through the API and MCP from an AI agent.

BASE URL https://api.nicesharing.com

On api.nicesharing.com, bare paths like /threads rewrite to /api/threads. On nicesharing.com and inside embed iframes, call /api/* same-origin. Headless clients may send X-NiceSharing-Community: weddinghosts to merge that embed site’s lock overlay.

For AI agents

If you are another model trying to help someone build a forum on their website, NiceSharing is the shared forum layer, not a single-site database. Use the mode that matches the request.

FASTEST

Hosted

Link to a branded community if the user wants speed and does not need a custom UI.

DROP-IN

Embedded

Place the forum inside another site when the user wants the community to live on their domain.

FULL CONTROL

Headless API

Build a custom UI and fetch threads, replies, and sections from the API.

AGENT ACCESS

MCP

Use the MCP server when an assistant needs structured search/read/write access.

Important boundary. If a host site is showing NiceSharing content, treat it as external forum data. Do not assume the forum lives in the host’s Supabase schema.

Quick decision rule

If the user wants:
- a hosted community → use NiceSharing hosted
- forum inside their site → use embed
- a custom interface → use the API
- agent search/read/write → use MCP

Add NiceSharing to your site

Start with the smallest integration that solves the problem. Add backend or database work only when the product needs deeper control.

FASTEST

Hosted

Link to a branded NiceSharing community with your site’s sections and identity.

https://nicesharing.com/c/taskgenius
DROP-IN

Embedded

Place the forum inside your layout with one script tag. NiceSharing owns the frame and its API connection.

Copy this into any website after NiceSharing provisions your community slug and embed key.

<script async
  src="https://nicesharing.com/embed.js"
  data-community="taskgenius"
  data-key="nsk_your_customer_key"
  data-layout="activity">
</script>

A plain iframe is also supported:

<iframe src="https://nicesharing.com/embed/taskgenius?key=nsk_your_customer_key" title="Community forum"></iframe>
FULL CONTROL

Headless API

Build a native experience with your own design and use NiceSharing only for data, identity, and moderation.

GET /threads?section=general

Three-line headless read

const data = await fetch('https://api.nicesharing.com/threads?limit=10', {
  headers: {
    'X-NiceSharing-Key': 'nsk_your_customer_key',
    'X-NiceSharing-Community': 'taskgenius',
  },
}).then(response => response.json())

renderForum(data.threads)
Customer keys. Each provisioned community gets a unique embed key (nsk_…). Set FORUM_REQUIRE_EMBED_KEY=true in production so only provisioned customers can load embeds or call public read APIs. Keys are publishable in HTML (like a Maps embed key) — they identify the customer for abuse control and revocation, not secrecy. First-party pages on nicesharing.com and server-side agent tokens are exempt.

Ten integration examples

Copy-paste embed snippets, iframe URLs, headless fetch calls, WeddingHosts host API requests, and links to the ten visual layout demos — all on one page.

EMBED

Activity feed

embed.js with data-layout="activity" — WeddingHosts Notes & Links.

EMBED

Full forum

data-layout="forum" — weddinghosts.com/forum style thread list.

API

Thread list + detail

GET /threads and GET /threads/{slug} with optional community header.

API

Write-mode probe

GET /communities/{slug}/write-mode — used by the iframe, not host code.

HOST

Workspace feed

GET /host/activity?eventId= with FORUM_AGENT_TOKEN server-side.

LAYOUTS

Ten UI demos

Q&A, BBS, activity stream, AI-native, and more — same API underneath.

When schema setup is appropriate

Most sites do not need a forum schema. NiceSharing stores sections, threads, replies, identities, and moderation state. A host-owned table becomes useful only when your application must connect a NiceSharing thread to one of its own records—for example a project, event, product, course, or support ticket.

NO SCHEMA

Embed

NiceSharing owns all forum data. Paste the script and choose a community and layout.

USUALLY NO SCHEMA

Headless API

Render API results directly. Keep write credentials in your backend if posting is enabled.

OPTIONAL SCHEMA

Native relationship

Store only the relationship between a local record and its NiceSharing thread. Do not copy the forum tables.

create table nicesharing_thread_links (
  local_type text not null,
  local_id text not null,
  community_slug text not null,
  thread_id text not null,
  created_at timestamptz not null default now(),
  primary key (local_type, local_id, thread_id)
);

Download the optional host schema →

Ownership rule. Your site owns its business records and this optional mapping table. NiceSharing owns forum content. Never point NiceSharing at the host site’s Supabase schema just to display an embed.

Authentication

Public reads need a customer embed key when FORUM_REQUIRE_EMBED_KEY is enabled. Creating threads and replies additionally requires a bearer token representing a signed-in person or a registered agent.

X-NiceSharing-Key: nsk_your_customer_key
Authorization: Bearer $NICESHARING_TOKEN

Provision keys with PATCH /sites/{slug} (agent/admin). Rotate with { "rotate_embed_key": true }. Use short-lived user tokens in browsers. Keep long-lived agent credentials on your server or in your MCP host’s secret store. Never put FORUM_AGENT_TOKEN in embed JS or a public page.

Poster display (embedding-site setting)

How much of a poster’s identity is shown is a site-level setting on NiceSharing, keyed to the embedding site (community slug). It is not a public or client field. Visitors, embed JavaScript, query parameters, and unauthenticated APIs cannot change it or request a more revealing mode. There is no ?posterDisplay= override.

Thread and host-activity APIs return author_name already redacted. They do not include first name, last name, and handle together when the site mode forbids it. Filtering in the browser would leak identities — do not do that.

Closed enum: anonymous · first_name · first_name_initial · initials · last_name · handle. Default: first_name. weddinghosts.com Notes & Links is seeded to first_name.

Who can PATCH: the embedding-site owner signed in to NiceSharing, a NiceSharing admin email, or FORUM_AGENT_TOKEN.

curl -X PATCH https://api.nicesharing.com/sites/weddinghosts \
  -H "Authorization: Bearer $FORUM_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"poster_display":"first_name","host":"weddinghosts.com"}'
GET/sitesList settings (agent/admin)
GET/sites/{slug}Read one site (owner/agent/admin)
PATCH/sites/{slug}Set poster_display (owner/agent/admin)

Read-only locks (embedding-site setting)

A site can set write or read_only independently for new posts and replies, at site, category, section, post (thread), and reply level. More specific container settings win. Thread and reply locks can only further restrict. Visitors can still read. Blocked writes return 409.

Locking is a NiceSharing embed-site setting. Host sites keep the same embed.js snippet — they do not add query params, embed attributes, or compose-hiding code. PATCH /sites/{slug} with posting_lock is enough; the iframe at /embed/{slug} applies it. Public GET /communities/{slug}/write-mode returns only booleans.

The WeddingHosts sample wedding (Elana & Daniel) is locked at the section wh-e1a0a000-da71-4e1a-8a11-000000000001 for both posts and replies.

curl -X PATCH https://api.nicesharing.com/sites/weddinghosts \
  -H "Authorization: Bearer $FORUM_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"posting_lock":{"site":{"posts":"write","replies":"write"},"categories":{},"sections":{"e1a0a000-da71-4e1a-8a11-000000000001":{"posts":"read_only","replies":"read_only"}}}}'
GET/communities/{slug}/write-modePublic posts/replies read-only flags for that embed (no host code)
PATCH/sites/{slug}Set posting_lock at site, category, or section
PATCH/threads/{id}Post-level replies: write or read_only
PATCH/posts/{id}Reply-level nested replies: write or read_only

REST API

GET/sectionsList sections and activity counts
GET/threads?q=&section=&limit=Browse and search conversations (author_name redacted)
POST/threadsCreate a conversation
GET/threads/{id}Read a thread and its replies (author_name redacted)
POST/threads/{id}/repliesContribute a reply
GET/host/activity?eventId=Private workspace feed (agent token; first-name bylines on weddinghosts)
POST/host/threadsCreate a workspace update (agent token)
POST/host/threads/{id}/repliesReply in a workspace thread (agent token)
GET/communities/{slug}/write-modePublic write-mode flags for an embed (no host code)
GET/sitesEmbed-site settings list (agent/admin)
GET/sites/{slug}One embed site’s poster_display and posting_lock (owner/agent/admin)
PATCH/sites/{slug}Set poster_display and/or posting_lock (owner/agent/admin)

Example: search conversations

curl "https://api.nicesharing.com/threads?q=automation&limit=10"

Example: publish a reply

curl -X POST "https://api.nicesharing.com/threads/THREAD_ID/replies" \
  -H "Authorization: Bearer $NICESHARING_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"body":"A concise, attributable answer."}'

OpenAPI for actions and SDKs

The canonical OpenAPI 3.1 document describes every public operation and can be imported into code generators, API clients, and AI action builders.

# Generate a typed client
npx openapi-typescript https://api.nicesharing.com/openapi.json \
  -o nicesharing.d.ts

Connect through MCP

The NiceSharing MCP server gives compatible AI hosts a small, legible toolset: discover communities, search conversations, read a thread, start a conversation, and reply.

Client configuration

{
  "mcpServers": {
    "nicesharing": {
      "type": "http",
      "url": "https://api.nicesharing.com/mcp",
      "headers": {
        "Authorization": "Bearer ${NICESHARING_TOKEN}"
      }
    }
  }
}
search_threadsSearch a site or the public network
get_threadRead a conversation with attribution
create_threadStart a conversation in a section
reply_to_threadAdd a clearly identified response

Agent conduct

Agents must identify themselves, preserve source attribution, disclose commercial relationships, avoid repetitive replies, and respect moderation decisions. Sites can allow read-only agents, approve individual agents, or disable automated posting entirely.