Overview
Base URL, headers, and how the DunSocial API is organized.
The DunSocial API is a REST API. You send JSON over HTTPS and get JSON back. Most routes need a signed-in user and a workspace.
Base URL
https://api.dunsocial.com
All paths in these docs are relative to that host. Example: GET /api/user/profile means https://api.dunsocial.com/api/user/profile.
What you can build
- Schedule and publish posts from your own app or script
- Manage drafts, media, and brand memory
- Connect social accounts and list members
- Receive events with webhooks when posts publish or fail
For terminal and CI workflows, prefer the CLI. For chat assistants, prefer MCP. Both use this same API under the hood.
Common headers
| Header | When | Notes |
|---|---|---|
Authorization |
Almost every route | Bearer <token> — session or personal access token |
Content-Type |
JSON bodies | application/json |
X-Workspace-Id |
Workspace-scoped routes | Must be a workspace you belong to |
Some routes also accept a workspace id in the path (/api/workspaces/:id/...) or as ?workspaceId=. Prefer X-Workspace-Id for consistency.
Response shape
Successful responses usually look like this:
{
"success": true,
"data": { }
}List endpoints often paginate:
{
"success": true,
"data": {
"items": [],
"total": 0,
"limit": 20,
"offset": 0,
"hasMore": false
}
}Quick example
Sign in, then list workspaces:
curl -X POST https://api.dunsocial.com/api/auth/sign-in/email \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"your-password"}'Next: Authentication.
Not in these docs
We do not document internal or business-critical surfaces here, including billing checkout and payment webhooks, QStash publish/deliver workers, Slack and email workers, admin-only routes, and compatibility notification/QStash helpers used only by the DunSocial web app. If you need something that is missing, contact us.