Skip to content

Threads Settings

OpenQuok public API provider settings for Meta Threads — 500-character cap, follow-up replies, thread finisher, internal plugs, and cross-account comments.

3 min read

Connect your agent today

Draft from chat, review in your calendar, and publish only what you approve.

Start for $0

Quick reference

PropertyValue
Identifierthreads
ConnectGET /api/v1/public/social/threads
Setup guideMeta Threads
Character cap500 (main caption, follow-ups, finisher, plug text)
Main-post mediaText-only OK; one image or video, or a carousel

Settings on create post

Pass per-channel options under providerSettingsByIntegrationId[<integration-id>]. Threads-specific keys nest in the threads composer bucket. The worker reads threads.replies, finisher fields, and plug objects from that bucket at publish time.

Flat vs nested: Threads follow-ups, finisher, and plugs use the nested threads.* bucket only — there are no flat CLI aliases for reply chains.

{
  "providerSettingsByIntegrationId": {
    "<threads-integration-id>": {
      "threads": {
        "replies": [
          { "message": "Part 2", "delaySeconds": 60 }
        ],
        "enabled": true,
        "message": "Thanks for reading!",
        "internalEngagementPlug": {
          "enabled": true,
          "message": "Link in bio.",
          "delaySeconds": 300
        },
        "crossAccountPlugs": [
          {
            "plugName": "threads-cross-account-comment",
            "enabled": true,
            "delayMs": 120000,
            "integrationIds": ["<other-threads-integration-id>"],
            "fields": { "comment": "Great thread!" }
          }
        ]
      }
    }
  }
}

Field reference

FieldTypeRequiredNotes
threads.repliesarrayNoFollow-up thread replies after the root post publishes
threads.replies[].messagestringYes (per row)Reply text; counts toward the 500-character cap
threads.replies[].delaySecondsnumberYes (per row)Wait after the previous part publishes (0 = immediately after prior step)
threads.replies[].mediaarrayNoOptional image or video per reply — upload first via POST /api/v1/public/upload
threads.enabledbooleanNoEnable thread finisher (default off)
threads.messagestringWhen finisher enabledClosing reply after all follow-ups complete
threads.internalEngagementPlug.enabledbooleanNoSame-account delayed engagement reply
threads.internalEngagementPlug.messagestringWhen plug enabledPlug reply text
threads.internalEngagementPlug.delaySecondsnumberNoSeconds after follow-ups + finisher (default varies by composer)
threads.crossAccountPlugsarrayNoComments from other Threads channels in the workspace

Follow-up comments

Scheduled same-account thread replies live in threads.replies. Each row needs message and delaySeconds. Optional media uses the same { id, path } shape as the main post.

Internal plugs

Internal plugs run on the publishing channel after follow-ups and the thread finisher complete. Configure threads.internalEngagementPlug on the same providerSettingsByIntegrationId entry as the main post.

See Internal plugs for how internal plugs differ from global channel rules.

Cross-account plugs

After the main thread publishes, other connected Threads channels in your workspace can post a comment via threads.crossAccountPlugs:

Plug idAction
threads-cross-account-commentComment from acting Threads channels (fields.comment)

Each entry needs plugName, integrationIds (acting channels — not the publisher), and optional delayMs. Acting channels need the threads_manage_mentions scope. See Cross-account plugs.

Complete example

Schedule a text post with two follow-up replies:

curl -X POST https://api.openquok.com/api/v1/public/posts 
  -H "Authorization: Bearer opo_your_programmatic_token" 
  -H "Content-Type: application/json" 
  -d '{
    "body": "Big thread incoming",
    "scheduledAt": "2026-05-15T10:00:00.000Z",
    "status": "scheduled",
    "integrationIds": ["<threads-integration-id>"],
    "isGlobal": true,
    "providerSettingsByIntegrationId": {
      "<threads-integration-id>": {
        "threads": {
          "replies": [
            { "message": "1/ here is the actual hot take", "delaySeconds": 60 },
            { "message": "2/ and here is the receipt", "delaySeconds": 300 }
          ]
        }
      }
    }
  }'
Search documentation
Find a docs page
Discord Support