API Documentation
With the NuxShare Public API you can connect your accounts, upload media and create posts programmatically. Base URL: https://nuxshare.com/api — all responses are JSON.
Authentication
Send your personal API key from the Settings page in the X-Api-Key header on every request. The key carries the same permissions as your panel session.
curl -H "X-Api-Key: nxs_..." \ https://nuxshare.com/api/social/accounts
You can regenerate the key on the Settings page — the old key becomes invalid immediately. Keep it secret; anyone holding it can publish on your behalf.
Platforms & connecting accounts
List the supported platforms and how each one connects:
curl -H "X-Api-Key: nxs_..." https://nuxshare.com/api/social/platforms
{ "platforms": [
{ "key": "x", "name": "X", "implemented": true, "connectMode": "oauth" },
{ "key": "telegram", "name": "Telegram", "implemented": true, "connectMode": "manual" },
...
] }For OAuth platforms (X, Facebook, Instagram, LinkedIn, Pinterest, TikTok), open the url returned by the start endpoint in a browser; after you approve on the platform, the account is connected automatically and appears on the Accounts page:
curl -H "X-Api-Key: nxs_..." \
https://nuxshare.com/api/social/x/oauth/start
{ "url": "https://x.com/i/oauth2/authorize?..." }Telegram needs no browser: after adding the bot to your channel as an admin, connect the channel directly via the API:
curl -X POST https://nuxshare.com/api/social/telegram/connect \
-H "X-Api-Key: nxs_..." -H "Content-Type: application/json" \
-d '{ "channel": "@kanaladi" }'Connected accounts
List your connected accounts — the _id values here are the accountId values you use when creating posts. Disconnect an account with DELETE /api/social/accounts/:id:
curl -H "X-Api-Key: nxs_..." https://nuxshare.com/api/social/accounts
{ "accounts": [
{ "_id": "665f...", "platform": "x", "handle": "@hesap", "avatarUrl": "..." }
] }Media
Images (≤2 MB — PNG/JPG/WebP/GIF) and videos (≤50 MB — MP4/MOV/WebM) are uploaded as multipart; the returned id is used as mediaIds when posting. GET /api/media/gallery lists your gallery, DELETE /api/media/:id removes an item:
curl -X POST https://nuxshare.com/api/media/upload \
-H "X-Api-Key: nxs_..." \
-F "file=@gorsel.png"
{ "media": { "id": "6660...", "type": "image", "url": "..." } }Creating posts
POST /api/posts body fields:
content— the post text (required)scheduleMode— now (immediately) · once (single date/time) · per (separate time per account)scheduledAt— YYYY-MM-DDTHH:mm — values without a timezone are interpreted using your timezone preference from Settings; ISO values with Z or +03:00 are used as-istargets— list of target accounts — each item carries an accountId; in per mode an item may include its own scheduledAtmediaIds— uploaded media ids (up to 10)draft— if true, saved as a draft and not published
curl -X POST https://nuxshare.com/api/posts \
-H "X-Api-Key: nxs_..." -H "Content-Type: application/json" \
-d '{
"content": "Merhaba dünya!",
"scheduleMode": "once",
"scheduledAt": "2026-09-15T10:30",
"targets": [{ "accountId": "665f..." }],
"mediaIds": ["6660..."],
"draft": false
}'
{ "post": { "id": "6661...", "status": "scheduled" } }List your posts with GET /api/posts (status: all/draft/scheduled/publishing/published/error · created: all/yesterday · pagination page/limit). Fetch one card with GET /api/posts/:id; edit draft and scheduled cards with PUT /api/posts/:id, remove with DELETE, and re-run failed cards with POST /api/posts/:id/restart:
curl -H "X-Api-Key: nxs_..." \ "https://nuxshare.com/api/posts?status=all&page=1&limit=50"
Platform rules
Character limits (exceeding returns 422):
- X: 280
- LinkedIn: 3000
- TikTok: 2200
- Pinterest: 800
Instagram, TikTok, Pinterest only accept posts with an image or video — mediaIds is required when targeting these platforms.
Errors & limits
Errors are returned with a { "error": "description" } body:
401— authentication failed (invalid or missing API key)403— plan limit reached (account or post limit)404— record not found422— validation error (character limit, media requirement, invalid account...)429— rate limit exceeded — wait for the duration in the retry-after header
Rate limit: 120 requests per minute per client (10 on auth endpoints). Connected accounts and post counts are limited by your plan.
