Bluesky Settings
OpenQuok public API provider settings for Bluesky — 300-character cap, images or video, and follow-up replies.
Connect your agent today
Draft from chat, review in your calendar, and publish only what you approve.
Quick reference
| Property | Value |
|---|---|
| Identifier | bluesky |
| Connect | Dashboard credentials — GET /api/v1/public/social/bluesky returns 400 |
| Setup guide | Bluesky |
| Character cap | 300 graphemes (main caption and each follow-up) |
| Main-post media | Text-only OK; up to 4 images or 1 MP4 (never mixed) |
Note
Keys in providerSettingsByIntegrationId use the channel UUID from GET /api/v1/public/integrations — not the bluesky identifier. See the Provider settings overview for terminology.
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
| Field | Type | Required | Notes |
|---|---|---|---|
| bluesky.replies | array | No | Follow-up replies after the root post publishes |
| bluesky.replies[].id | string | No | Stable row id (composer-generated) |
| bluesky.replies[].message | string | Yes (per row) | Reply text; 300 graphemes when status is scheduled |
| bluesky.replies[].delaySeconds | number | Yes (per row) | Wait after the previous part publishes |
| bluesky.replies[].media | array | No | Same 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.
Tip
Use status: draft or -t draft if you need to store longer copy before you shorten it for schedule.
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 }
]
}
}
}
}'