curl --request POST \
--url https://openapi.enginy.ai/v1/social-selling/scheduled-posts \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"identityId": 12,
"text": "<string>",
"scheduledAt": "2026-11-03T09:30:00Z",
"name": "<string>",
"reactionsAmount": 250,
"reactionTypes": []
}
'import requests
url = "https://openapi.enginy.ai/v1/social-selling/scheduled-posts"
payload = {
"identityId": 12,
"text": "<string>",
"scheduledAt": "2026-11-03T09:30:00Z",
"name": "<string>",
"reactionsAmount": 250,
"reactionTypes": []
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identityId: 12,
text: '<string>',
scheduledAt: '2026-11-03T09:30:00Z',
name: '<string>',
reactionsAmount: 250,
reactionTypes: []
})
};
fetch('https://openapi.enginy.ai/v1/social-selling/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://openapi.enginy.ai/v1/social-selling/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([
'identityId' => 12,
'text' => '<string>',
'scheduledAt' => '2026-11-03T09:30:00Z',
'name' => '<string>',
'reactionsAmount' => 250,
'reactionTypes' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://openapi.enginy.ai/v1/social-selling/scheduled-posts"
payload := strings.NewReader("{\n \"identityId\": 12,\n \"text\": \"<string>\",\n \"scheduledAt\": \"2026-11-03T09:30:00Z\",\n \"name\": \"<string>\",\n \"reactionsAmount\": 250,\n \"reactionTypes\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://openapi.enginy.ai/v1/social-selling/scheduled-posts")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identityId\": 12,\n \"text\": \"<string>\",\n \"scheduledAt\": \"2026-11-03T09:30:00Z\",\n \"name\": \"<string>\",\n \"reactionsAmount\": 250,\n \"reactionTypes\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/social-selling/scheduled-posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identityId\": 12,\n \"text\": \"<string>\",\n \"scheduledAt\": \"2026-11-03T09:30:00Z\",\n \"name\": \"<string>\",\n \"reactionsAmount\": 250,\n \"reactionTypes\": []\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"publishingPostId": 29371,
"identityId": 123,
"scheduledAt": "<string>",
"name": "<string>",
"appUrl": "<string>"
}
}Schedule a Social Selling post
Schedule a plain-text LinkedIn post: Enginy publishes it at scheduledAt from the LinkedIn account of identityId (an identity the caller may use), optionally followed by reactionsAmount reactions from the workspace’s identity pool. The identity’s owner receives a confirmation email. Text only: no images, documents, mentions, company page or scheduled comments (edit the post in Enginy for those, via appUrl). Answers publishingPostId, which cancel_a_scheduled_social_selling_post takes until the publish time. Not idempotent: a retry schedules a second post.
Required scope:
SOCIAL_SELLING_WRITERate limit: 10 requests per minute
curl --request POST \
--url https://openapi.enginy.ai/v1/social-selling/scheduled-posts \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"identityId": 12,
"text": "<string>",
"scheduledAt": "2026-11-03T09:30:00Z",
"name": "<string>",
"reactionsAmount": 250,
"reactionTypes": []
}
'import requests
url = "https://openapi.enginy.ai/v1/social-selling/scheduled-posts"
payload = {
"identityId": 12,
"text": "<string>",
"scheduledAt": "2026-11-03T09:30:00Z",
"name": "<string>",
"reactionsAmount": 250,
"reactionTypes": []
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
identityId: 12,
text: '<string>',
scheduledAt: '2026-11-03T09:30:00Z',
name: '<string>',
reactionsAmount: 250,
reactionTypes: []
})
};
fetch('https://openapi.enginy.ai/v1/social-selling/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://openapi.enginy.ai/v1/social-selling/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([
'identityId' => 12,
'text' => '<string>',
'scheduledAt' => '2026-11-03T09:30:00Z',
'name' => '<string>',
'reactionsAmount' => 250,
'reactionTypes' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://openapi.enginy.ai/v1/social-selling/scheduled-posts"
payload := strings.NewReader("{\n \"identityId\": 12,\n \"text\": \"<string>\",\n \"scheduledAt\": \"2026-11-03T09:30:00Z\",\n \"name\": \"<string>\",\n \"reactionsAmount\": 250,\n \"reactionTypes\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://openapi.enginy.ai/v1/social-selling/scheduled-posts")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"identityId\": 12,\n \"text\": \"<string>\",\n \"scheduledAt\": \"2026-11-03T09:30:00Z\",\n \"name\": \"<string>\",\n \"reactionsAmount\": 250,\n \"reactionTypes\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/social-selling/scheduled-posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"identityId\": 12,\n \"text\": \"<string>\",\n \"scheduledAt\": \"2026-11-03T09:30:00Z\",\n \"name\": \"<string>\",\n \"reactionsAmount\": 250,\n \"reactionTypes\": []\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"publishingPostId": 29371,
"identityId": 123,
"scheduledAt": "<string>",
"name": "<string>",
"appUrl": "<string>"
}
}Authorizations
Body
The connected LinkedIn identity that publishes the post (an id of get_identities). It must be an identity the caller may use.
12
The post text, 1–3000 characters, published as is (plain text: no mentions, media or formatting).
1 - 3000When to publish, as an ISO 8601 date-time with offset: at least 2 minutes and at most 365 days from now.
"2026-11-03T09:30:00Z"
Display name in Enginy. Defaults to the first line of the text (40 characters).
1 - 200Reactions from the workspace’s identity pool once the post is live (0–500). Default 0.
0 <= x <= 500Reaction kinds for reactionsAmount. Defaults to the LinkedIn mix.
1LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, ENTERTAINMENT