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 with no media attached",
      "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 with no media attached"
    }
  )
});

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 30-day scheduling window as media posts.
  • A scheduled text post targeting a TikTok or Instagram account is rejected with 400.

Threads character limits in detail

A Threads text post carries up to 500 characters, and the limit applies per post, not per campaign. In a thread sequence, each of the up to 10 items gets its own 500-character budget, so a long explanation is split across linked items rather than squeezed into one post. Every item also counts toward the Threads rate limit of 250 posts per user per 24 hours, which is the number to watch when a backend schedules a week of content at once. Over-length content is rejected before the request reaches Threads, so validate length where the content is prepared.

Threads text and character limits
LimitValue
Text post length500 characters
Thread item length500 characters per item
Thread sequence size10 items
Daily publishing cap250 posts per user per 24 hours
Facebook text post4000 characters

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.