curl --request POST \
--url https://scheduler.dashsocial.com/bluesky/scheduled_posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"approval_requests": [
{
"requested_by_user_id": 123,
"review_user_id": 123
}
],
"auto_publish": true,
"board_ids": [
1
],
"brand_id": 1,
"campaign_ids": [
1
],
"content_tag_ids": [
1
],
"creation_source": "RSS_FEED",
"duplicate_to_brand_ids": [
1
],
"media_ids": [
1
],
"post_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rss_feed_id": 123,
"rss_guid": "<string>",
"rss_publish_date": "2023-11-07T05:31:56Z",
"sort_index": 123,
"text": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://scheduler.dashsocial.com/bluesky/scheduled_posts"
payload = {
"approval_requests": [
{
"requested_by_user_id": 123,
"review_user_id": 123
}
],
"auto_publish": True,
"board_ids": [1],
"brand_id": 1,
"campaign_ids": [1],
"content_tag_ids": [1],
"creation_source": "RSS_FEED",
"duplicate_to_brand_ids": [1],
"media_ids": [1],
"post_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rss_feed_id": 123,
"rss_guid": "<string>",
"rss_publish_date": "2023-11-07T05:31:56Z",
"sort_index": 123,
"text": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
approval_requests: [{requested_by_user_id: 123, review_user_id: 123}],
auto_publish: true,
board_ids: [1],
brand_id: 1,
campaign_ids: [1],
content_tag_ids: [1],
creation_source: 'RSS_FEED',
duplicate_to_brand_ids: [1],
media_ids: [1],
post_group_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rss_feed_id: 123,
rss_guid: '<string>',
rss_publish_date: '2023-11-07T05:31:56Z',
sort_index: 123,
text: '<string>',
timestamp: '2023-11-07T05:31:56Z'
})
};
fetch('https://scheduler.dashsocial.com/bluesky/scheduled_posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scheduler.dashsocial.com/bluesky/scheduled_posts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'approval_requests' => [
[
'requested_by_user_id' => 123,
'review_user_id' => 123
]
],
'auto_publish' => true,
'board_ids' => [
1
],
'brand_id' => 1,
'campaign_ids' => [
1
],
'content_tag_ids' => [
1
],
'creation_source' => 'RSS_FEED',
'duplicate_to_brand_ids' => [
1
],
'media_ids' => [
1
],
'post_group_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'rss_feed_id' => 123,
'rss_guid' => '<string>',
'rss_publish_date' => '2023-11-07T05:31:56Z',
'sort_index' => 123,
'text' => '<string>',
'timestamp' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://scheduler.dashsocial.com/bluesky/scheduled_posts"
payload := strings.NewReader("{\n \"approval_requests\": [\n {\n \"requested_by_user_id\": 123,\n \"review_user_id\": 123\n }\n ],\n \"auto_publish\": true,\n \"board_ids\": [\n 1\n ],\n \"brand_id\": 1,\n \"campaign_ids\": [\n 1\n ],\n \"content_tag_ids\": [\n 1\n ],\n \"creation_source\": \"RSS_FEED\",\n \"duplicate_to_brand_ids\": [\n 1\n ],\n \"media_ids\": [\n 1\n ],\n \"post_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rss_feed_id\": 123,\n \"rss_guid\": \"<string>\",\n \"rss_publish_date\": \"2023-11-07T05:31:56Z\",\n \"sort_index\": 123,\n \"text\": \"<string>\",\n \"timestamp\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://scheduler.dashsocial.com/bluesky/scheduled_posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"approval_requests\": [\n {\n \"requested_by_user_id\": 123,\n \"review_user_id\": 123\n }\n ],\n \"auto_publish\": true,\n \"board_ids\": [\n 1\n ],\n \"brand_id\": 1,\n \"campaign_ids\": [\n 1\n ],\n \"content_tag_ids\": [\n 1\n ],\n \"creation_source\": \"RSS_FEED\",\n \"duplicate_to_brand_ids\": [\n 1\n ],\n \"media_ids\": [\n 1\n ],\n \"post_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rss_feed_id\": 123,\n \"rss_guid\": \"<string>\",\n \"rss_publish_date\": \"2023-11-07T05:31:56Z\",\n \"sort_index\": 123,\n \"text\": \"<string>\",\n \"timestamp\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scheduler.dashsocial.com/bluesky/scheduled_posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"approval_requests\": [\n {\n \"requested_by_user_id\": 123,\n \"review_user_id\": 123\n }\n ],\n \"auto_publish\": true,\n \"board_ids\": [\n 1\n ],\n \"brand_id\": 1,\n \"campaign_ids\": [\n 1\n ],\n \"content_tag_ids\": [\n 1\n ],\n \"creation_source\": \"RSS_FEED\",\n \"duplicate_to_brand_ids\": [\n 1\n ],\n \"media_ids\": [\n 1\n ],\n \"post_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rss_feed_id\": 123,\n \"rss_guid\": \"<string>\",\n \"rss_publish_date\": \"2023-11-07T05:31:56Z\",\n \"sort_index\": 123,\n \"text\": \"<string>\",\n \"timestamp\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"errors": {},
"message": "<string>",
"status": "<string>"
}{
"code": 123,
"errors": {},
"message": "<string>",
"status": "<string>"
}Create a Bluesky post
Create a new Bluesky post.
curl --request POST \
--url https://scheduler.dashsocial.com/bluesky/scheduled_posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"approval_requests": [
{
"requested_by_user_id": 123,
"review_user_id": 123
}
],
"auto_publish": true,
"board_ids": [
1
],
"brand_id": 1,
"campaign_ids": [
1
],
"content_tag_ids": [
1
],
"creation_source": "RSS_FEED",
"duplicate_to_brand_ids": [
1
],
"media_ids": [
1
],
"post_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rss_feed_id": 123,
"rss_guid": "<string>",
"rss_publish_date": "2023-11-07T05:31:56Z",
"sort_index": 123,
"text": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://scheduler.dashsocial.com/bluesky/scheduled_posts"
payload = {
"approval_requests": [
{
"requested_by_user_id": 123,
"review_user_id": 123
}
],
"auto_publish": True,
"board_ids": [1],
"brand_id": 1,
"campaign_ids": [1],
"content_tag_ids": [1],
"creation_source": "RSS_FEED",
"duplicate_to_brand_ids": [1],
"media_ids": [1],
"post_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rss_feed_id": 123,
"rss_guid": "<string>",
"rss_publish_date": "2023-11-07T05:31:56Z",
"sort_index": 123,
"text": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
approval_requests: [{requested_by_user_id: 123, review_user_id: 123}],
auto_publish: true,
board_ids: [1],
brand_id: 1,
campaign_ids: [1],
content_tag_ids: [1],
creation_source: 'RSS_FEED',
duplicate_to_brand_ids: [1],
media_ids: [1],
post_group_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rss_feed_id: 123,
rss_guid: '<string>',
rss_publish_date: '2023-11-07T05:31:56Z',
sort_index: 123,
text: '<string>',
timestamp: '2023-11-07T05:31:56Z'
})
};
fetch('https://scheduler.dashsocial.com/bluesky/scheduled_posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scheduler.dashsocial.com/bluesky/scheduled_posts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'approval_requests' => [
[
'requested_by_user_id' => 123,
'review_user_id' => 123
]
],
'auto_publish' => true,
'board_ids' => [
1
],
'brand_id' => 1,
'campaign_ids' => [
1
],
'content_tag_ids' => [
1
],
'creation_source' => 'RSS_FEED',
'duplicate_to_brand_ids' => [
1
],
'media_ids' => [
1
],
'post_group_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'rss_feed_id' => 123,
'rss_guid' => '<string>',
'rss_publish_date' => '2023-11-07T05:31:56Z',
'sort_index' => 123,
'text' => '<string>',
'timestamp' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://scheduler.dashsocial.com/bluesky/scheduled_posts"
payload := strings.NewReader("{\n \"approval_requests\": [\n {\n \"requested_by_user_id\": 123,\n \"review_user_id\": 123\n }\n ],\n \"auto_publish\": true,\n \"board_ids\": [\n 1\n ],\n \"brand_id\": 1,\n \"campaign_ids\": [\n 1\n ],\n \"content_tag_ids\": [\n 1\n ],\n \"creation_source\": \"RSS_FEED\",\n \"duplicate_to_brand_ids\": [\n 1\n ],\n \"media_ids\": [\n 1\n ],\n \"post_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rss_feed_id\": 123,\n \"rss_guid\": \"<string>\",\n \"rss_publish_date\": \"2023-11-07T05:31:56Z\",\n \"sort_index\": 123,\n \"text\": \"<string>\",\n \"timestamp\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://scheduler.dashsocial.com/bluesky/scheduled_posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"approval_requests\": [\n {\n \"requested_by_user_id\": 123,\n \"review_user_id\": 123\n }\n ],\n \"auto_publish\": true,\n \"board_ids\": [\n 1\n ],\n \"brand_id\": 1,\n \"campaign_ids\": [\n 1\n ],\n \"content_tag_ids\": [\n 1\n ],\n \"creation_source\": \"RSS_FEED\",\n \"duplicate_to_brand_ids\": [\n 1\n ],\n \"media_ids\": [\n 1\n ],\n \"post_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rss_feed_id\": 123,\n \"rss_guid\": \"<string>\",\n \"rss_publish_date\": \"2023-11-07T05:31:56Z\",\n \"sort_index\": 123,\n \"text\": \"<string>\",\n \"timestamp\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scheduler.dashsocial.com/bluesky/scheduled_posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"approval_requests\": [\n {\n \"requested_by_user_id\": 123,\n \"review_user_id\": 123\n }\n ],\n \"auto_publish\": true,\n \"board_ids\": [\n 1\n ],\n \"brand_id\": 1,\n \"campaign_ids\": [\n 1\n ],\n \"content_tag_ids\": [\n 1\n ],\n \"creation_source\": \"RSS_FEED\",\n \"duplicate_to_brand_ids\": [\n 1\n ],\n \"media_ids\": [\n 1\n ],\n \"post_group_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rss_feed_id\": 123,\n \"rss_guid\": \"<string>\",\n \"rss_publish_date\": \"2023-11-07T05:31:56Z\",\n \"sort_index\": 123,\n \"text\": \"<string>\",\n \"timestamp\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"code": 123,
"errors": {},
"message": "<string>",
"status": "<string>"
}{
"code": 123,
"errors": {},
"message": "<string>",
"status": "<string>"
}Bluesky-specific fields
| Parameter | Description |
|---|---|
text | Post caption text |
Publishing modes
| Mode | status | auto_publish | timestamp |
|---|---|---|---|
| Publish immediately | AUTOPUBLISHING | true | Not required |
| Schedule for later | SCHEDULED | true | Required |
| Save as draft | DRAFT | true or false | Optional |
Example request
{
"auto_publish": true,
"brand_id": 144,
"status": "SCHEDULED",
"media_ids": [650431494, 650482495, 650419615, 650418969],
"timestamp": "2026-03-12T22:30:00.000Z",
"text": "A few recent favorites from our spring inspiration board."
}
Notes
auto_publishis always treated astrue, even iffalseis provided.- Caption-only posts (no media) are supported.
- Image posts support up to 4 images.
- Bluesky supports image media only. Video and mixed media are not supported.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The approval policy of the approval request
APPROVAL_REQUIRED, APPROVAL_NOT_REQUIRED The list of approval requests associated with the post.
Show child attributes
Show child attributes
Whether the post should be auto published.
The list of the board ids associated with the post.
x >= 0The id of the brand to which the post belongs.
x >= 0The list of the campaign ids associated with the post.
x >= 0The list of the content tag ids associated with the post.
x >= 0To identify the user or the application that created the post.
RSS_FEED The list of duplicate to brand ids.
55x >= 0The list of the media ids attached to the post.
x >= 0The id of the post group associated with the post.
Foreign key reference to the RSS feed table.
The unique identifier coming from RSS Feed.
The timestamp of when an RSS feed item was published
The sorted index for unscheduled posts.
The current status of the post.
AUTOPUBLISHING, DRAFT, EXPIRED, FAILED, IMPORTED, MISSING_APPROVALS, PARTIALLY_FAILED, POSTED, SCHEDULED, SKIPPED, USERS_NOTIFIED Text content of the Bluesky post
The scheduled date & time for publishing the post.