Skip to main content
Back to API docs

Text-only posting

Text-Only Post API for Threads and Facebook

Threads and Facebook Pages accept posts that carry no media at all. Send the same content post payload you use for media, minus the mediaItems field. TikTok and Instagram require media and will reject an empty request.

Which platforms accept text-only posts

Only Threads and Facebook can publish without media. Sending a media-less request to TikTok or Instagram returns 400.

  • Threads — text-only posts and thread sequences (see the thread sequence guide).
  • Facebook — text-only posts to a connected Page.
  • TikTok — not supported, media is mandatory.
  • Instagram — not supported, media is mandatory.

Publish immediately: POST /api/content/post

Omit mediaItems entirely (or send an empty array) and the request is treated as a text post. The content field is required and must not be blank — a whitespace-only caption counts as empty.

const API_BASE_URL = 'https://api.wahdx.com';
const API_KEY = process.env.WAHDX_API_KEY;

const headers = {
  'X-API-Key': API_KEY,
  'Content-Type': 'application/json'
};

// Threads text-only post
await fetch(API_BASE_URL + '/api/content/post', {
  method: 'POST',
  headers,
  body: JSON.stringify(
    {
      "platform": "threads",
      "accountId": "THREADS_ACCOUNT_ID",
      "content": "Threads text-only post — no media needed",
      "threadsSettings": {
        "who_can_reply": "everyone"
      }
    }
  )
});

// Facebook Page text-only post
await fetch(API_BASE_URL + '/api/content/post', {
  method: 'POST',
  headers,
  body: JSON.stringify(
    {
      "platform": "facebook",
      "accountId": "FACEBOOK_ACCOUNT_ID",
      "content": "Facebook Page text-only post — no media needed"
    }
  )
});

Schedule a text-only post: POST /api/posts

Set mediaType to "text" and pick a platform that supports it. mediaUrls may be omitted. Every selected account must be on a text-capable platform, otherwise the request is rejected before anything is queued.

const API_BASE_URL = 'https://api.wahdx.com';
const API_KEY = process.env.WAHDX_API_KEY;

const headers = {
  'X-API-Key': API_KEY,
  'Content-Type': 'application/json'
};

// Schedule a text-only post
await fetch(API_BASE_URL + '/api/posts', {
  method: 'POST',
  headers,
  body: JSON.stringify(
    {
      "platform": "facebook",
      "mediaType": "text",
      "content": "Scheduled text-only post",
      "accountIds": [
        "FACEBOOK_ACCOUNT_ID"
      ],
      "scheduledAt": "2026-08-01T09:00:00.000Z"
    }
  )
});

Requirements and limits

Constraints applied to every text-only request.

  • content is required and cannot be empty or whitespace-only. Maximum: Threads 500, Facebook 4000 characters.
  • mediaItems / mediaUrls must be absent or empty — mixing media into a text post makes it a photo or video post instead.
  • Threads requires the threads_content_publish scope; Facebook requires pages_manage_posts.
  • Scheduled text posts follow the same 7-day scheduling window as media posts.
  • A scheduled text post targeting a TikTok or Instagram account is rejected with 400.

FAQ

Common questions about this API topic.

Which platforms support text-only posts?

Threads and Facebook Pages. TikTok and Instagram require media and will reject a request with no mediaItems.

What happens if I omit content on a text-only post?

The request is rejected with 400 and the message "content is required for text-only posts". A caption containing only whitespace is treated as empty.

Can I schedule a text-only post?

Yes. POST /api/posts with mediaType "text" and platform "threads" or "facebook". mediaUrls can be omitted.

Is text-only posting available in the dashboard UI?

Not yet. Text-only posting is available through the API only. Text posts created via API do appear in the dashboard history and scheduled lists.