curl --request POST \
--url https://api.woopsocial.com/v1/posts/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"schedule": {
"type": "DRAFT"
},
"socialAccounts": [
{
"platform": "FACEBOOK",
"socialAccountId": "<string>",
"contentOverride": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"link": "<string>",
"locationId": "<string>"
}
],
"autoDeleteMediaAfterPublish": false
}
'import requests
url = "https://api.woopsocial.com/v1/posts/validate"
payload = {
"content": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"schedule": { "type": "DRAFT" },
"socialAccounts": [
{
"platform": "FACEBOOK",
"socialAccountId": "<string>",
"contentOverride": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"link": "<string>",
"locationId": "<string>"
}
],
"autoDeleteMediaAfterPublish": False
}
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({
content: [{text: '<string>', media: [{type: 'MEDIA_LIBRARY', mediaId: '<string>'}]}],
schedule: {type: 'DRAFT'},
socialAccounts: [
{
platform: 'FACEBOOK',
socialAccountId: '<string>',
contentOverride: [{text: '<string>', media: [{type: 'MEDIA_LIBRARY', mediaId: '<string>'}]}],
link: '<string>',
locationId: '<string>'
}
],
autoDeleteMediaAfterPublish: false
})
};
fetch('https://api.woopsocial.com/v1/posts/validate', 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://api.woopsocial.com/v1/posts/validate",
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([
'content' => [
[
'text' => '<string>',
'media' => [
[
'type' => 'MEDIA_LIBRARY',
'mediaId' => '<string>'
]
]
]
],
'schedule' => [
'type' => 'DRAFT'
],
'socialAccounts' => [
[
'platform' => 'FACEBOOK',
'socialAccountId' => '<string>',
'contentOverride' => [
[
'text' => '<string>',
'media' => [
[
'type' => 'MEDIA_LIBRARY',
'mediaId' => '<string>'
]
]
]
],
'link' => '<string>',
'locationId' => '<string>'
]
],
'autoDeleteMediaAfterPublish' => false
]),
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://api.woopsocial.com/v1/posts/validate"
payload := strings.NewReader("{\n \"content\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"schedule\": {\n \"type\": \"DRAFT\"\n },\n \"socialAccounts\": [\n {\n \"platform\": \"FACEBOOK\",\n \"socialAccountId\": \"<string>\",\n \"contentOverride\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"link\": \"<string>\",\n \"locationId\": \"<string>\"\n }\n ],\n \"autoDeleteMediaAfterPublish\": false\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://api.woopsocial.com/v1/posts/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"schedule\": {\n \"type\": \"DRAFT\"\n },\n \"socialAccounts\": [\n {\n \"platform\": \"FACEBOOK\",\n \"socialAccountId\": \"<string>\",\n \"contentOverride\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"link\": \"<string>\",\n \"locationId\": \"<string>\"\n }\n ],\n \"autoDeleteMediaAfterPublish\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.woopsocial.com/v1/posts/validate")
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 \"content\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"schedule\": {\n \"type\": \"DRAFT\"\n },\n \"socialAccounts\": [\n {\n \"platform\": \"FACEBOOK\",\n \"socialAccountId\": \"<string>\",\n \"contentOverride\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"link\": \"<string>\",\n \"locationId\": \"<string>\"\n }\n ],\n \"autoDeleteMediaAfterPublish\": false\n}"
response = http.request(request)
puts response.read_body{
"isValid": true,
"errors": [
{
"path": "<string>",
"message": "<string>"
}
],
"warnings": [
{
"path": "<string>",
"message": "<string>"
}
]
}{
"code": "TOO_MANY_CONCURRENT_REQUESTS",
"message": "<string>"
}{
"message": "<string>",
"validationErrors": [
{
"path": "<string>",
"message": "<string>"
}
],
"conflictingSocialAccountIds": [
"<string>"
]
}Validate post
Validates a post without creating one.
This endpoint applies the same validation rules as POST /posts,
including social account resolution, platform-specific validation, and
media validation for referenced media library items.
curl --request POST \
--url https://api.woopsocial.com/v1/posts/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"schedule": {
"type": "DRAFT"
},
"socialAccounts": [
{
"platform": "FACEBOOK",
"socialAccountId": "<string>",
"contentOverride": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"link": "<string>",
"locationId": "<string>"
}
],
"autoDeleteMediaAfterPublish": false
}
'import requests
url = "https://api.woopsocial.com/v1/posts/validate"
payload = {
"content": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"schedule": { "type": "DRAFT" },
"socialAccounts": [
{
"platform": "FACEBOOK",
"socialAccountId": "<string>",
"contentOverride": [
{
"text": "<string>",
"media": [
{
"type": "MEDIA_LIBRARY",
"mediaId": "<string>"
}
]
}
],
"link": "<string>",
"locationId": "<string>"
}
],
"autoDeleteMediaAfterPublish": False
}
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({
content: [{text: '<string>', media: [{type: 'MEDIA_LIBRARY', mediaId: '<string>'}]}],
schedule: {type: 'DRAFT'},
socialAccounts: [
{
platform: 'FACEBOOK',
socialAccountId: '<string>',
contentOverride: [{text: '<string>', media: [{type: 'MEDIA_LIBRARY', mediaId: '<string>'}]}],
link: '<string>',
locationId: '<string>'
}
],
autoDeleteMediaAfterPublish: false
})
};
fetch('https://api.woopsocial.com/v1/posts/validate', 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://api.woopsocial.com/v1/posts/validate",
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([
'content' => [
[
'text' => '<string>',
'media' => [
[
'type' => 'MEDIA_LIBRARY',
'mediaId' => '<string>'
]
]
]
],
'schedule' => [
'type' => 'DRAFT'
],
'socialAccounts' => [
[
'platform' => 'FACEBOOK',
'socialAccountId' => '<string>',
'contentOverride' => [
[
'text' => '<string>',
'media' => [
[
'type' => 'MEDIA_LIBRARY',
'mediaId' => '<string>'
]
]
]
],
'link' => '<string>',
'locationId' => '<string>'
]
],
'autoDeleteMediaAfterPublish' => false
]),
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://api.woopsocial.com/v1/posts/validate"
payload := strings.NewReader("{\n \"content\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"schedule\": {\n \"type\": \"DRAFT\"\n },\n \"socialAccounts\": [\n {\n \"platform\": \"FACEBOOK\",\n \"socialAccountId\": \"<string>\",\n \"contentOverride\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"link\": \"<string>\",\n \"locationId\": \"<string>\"\n }\n ],\n \"autoDeleteMediaAfterPublish\": false\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://api.woopsocial.com/v1/posts/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"schedule\": {\n \"type\": \"DRAFT\"\n },\n \"socialAccounts\": [\n {\n \"platform\": \"FACEBOOK\",\n \"socialAccountId\": \"<string>\",\n \"contentOverride\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"link\": \"<string>\",\n \"locationId\": \"<string>\"\n }\n ],\n \"autoDeleteMediaAfterPublish\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.woopsocial.com/v1/posts/validate")
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 \"content\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"schedule\": {\n \"type\": \"DRAFT\"\n },\n \"socialAccounts\": [\n {\n \"platform\": \"FACEBOOK\",\n \"socialAccountId\": \"<string>\",\n \"contentOverride\": [\n {\n \"text\": \"<string>\",\n \"media\": [\n {\n \"type\": \"MEDIA_LIBRARY\",\n \"mediaId\": \"<string>\"\n }\n ]\n }\n ],\n \"link\": \"<string>\",\n \"locationId\": \"<string>\"\n }\n ],\n \"autoDeleteMediaAfterPublish\": false\n}"
response = http.request(request)
puts response.read_body{
"isValid": true,
"errors": [
{
"path": "<string>",
"message": "<string>"
}
],
"warnings": [
{
"path": "<string>",
"message": "<string>"
}
]
}{
"code": "TOO_MANY_CONCURRENT_REQUESTS",
"message": "<string>"
}{
"message": "<string>",
"validationErrors": [
{
"path": "<string>",
"message": "<string>"
}
],
"conflictingSocialAccountIds": [
"<string>"
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Post content expressed as thread items.
The array exists for future thread support. Currently exactly one item is supported.
1 elementShow child attributes
Show child attributes
When the post should be published.
- Draft
- Publish Now
- Schedule For Later
Show child attributes
Show child attributes
Social account targets for this post.
All referenced social accounts must belong to the same project.
Duplicate socialAccountId values are invalid.
1- Facebook
- Instagram
- LinkedIn
- LinkedIn Pages
- Pinterest
- Threads
- TikTok
- WoopTest
- X
- YouTube
Show child attributes
Show child attributes
When true, all media referenced by this post is automatically deleted from the media library after all social account deliveries for the post have published successfully.
Response
Validation result.
Was this page helpful?