Skip to content

Bluesky Settings

OpenQuok public API provider settings for Bluesky — 300-character cap, images or video, and follow-up replies.

2 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
Identifierbluesky
ConnectDashboard credentials — GET /api/v1/public/social/bluesky returns 400
Setup guideBluesky
Character cap300 graphemes (main caption and each follow-up)
Main-post mediaText-only OK; up to 4 images or 1 MP4 (never mixed)

Settings on create post

Bluesky has no title, tags, or privacy fields in providerSettingsByIntegrationId. The main caption is body; attachments use top-level media or mediaByIntegrationId.

Scheduled same-account replies use the nested bluesky bucket only:

{
  "providerSettingsByIntegrationId": {
    "<bluesky-integration-id>": {
      "bluesky": {
        "replies": [
          {
            "id": "reply-1",
            "message": "More detail in the reply.",
            "delaySeconds": 300,
            "media": [{ "id": "<media-id>", "path": "FILE_PATH_FROM_UPLOAD" }]
          }
        ]
      }
    }
  }
}

Field reference

FieldTypeRequiredNotes
bluesky.repliesarrayNoFollow-up replies after the root post publishes
bluesky.replies[].idstringNoStable row id (composer-generated)
bluesky.replies[].messagestringYes (per row)Reply text; 300 graphemes when status is scheduled
bluesky.replies[].delaySecondsnumberYes (per row)Wait after the previous part publishes
bluesky.replies[].mediaarrayNoSame rules as main post — up to four images or one MP4, not mixed

Follow-up comments

Same-account replies live in bluesky.replies. Each row needs message and delaySeconds. Optional media uses the same { id, path } shape as the main post — upload first via POST /api/v1/public/upload.

Complete example

Schedule a text post with one follow-up reply:

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": "Shipping a small update today.",
    "scheduledAt": "2026-05-15T10:00:00.000Z",
    "status": "scheduled",
    "integrationIds": ["<bluesky-integration-id>"],
    "isGlobal": true,
    "providerSettingsByIntegrationId": {
      "<bluesky-integration-id>": {
        "bluesky": {
          "replies": [
            { "id": "reply-1", "message": "Thread continues here.", "delaySeconds": 120 }
          ]
        }
      }
    }
  }'
Search documentation
Find a docs page
Discord Support