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-is
  • targets — list of target accounts — each item carries an accountId; in per mode an item may include its own scheduledAt
  • mediaIds — 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 found
  • 422 — 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.