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>"
}
]
}{
"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>"
}
]
}{
"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?