Social media post checker API
Paste your post, pick the networks and say what media you attach. The checker shows, per network, what would stop the post from publishing and what would make it look worse, using the same rules PostBoost checks before it sends a post.
- Endpoint:
POST https://postboost.co/app/api/tools/social-media-post-checker(operationIdcheckPost) - Web tool: postboost.co/tools/social-media-post-checker
- Token: optional (limits)
- MCP: tool
check-postonhttps://postboost.co/mcp/tools
Request
| Field | Type | Default | Description |
|---|---|---|---|
text | string | "" | The post text, up to 10,000 characters; 5,000 without an API token. |
networks | array of string | The networks to check the post for. | |
media | object | The attached media, all of one type. Omit for a text-only post. |
Call it
- curl
- Python
- Node.js
- PHP
- Go
- Ruby
- Java
- C#
- Rust
- CLI
curl -X POST https://postboost.co/app/api/tools/social-media-post-checker \
-H 'Content-Type: application/json' \
-d '{"text":"Big news: https://postboost.co #launch","networks":["x","instagram"]}'
from postboost import ApiClient, Configuration
from postboost.api.free_tools_api import FreeToolsApi
from postboost.models import FreeToolCheckPostRequest
with ApiClient(Configuration()) as client:
api = FreeToolsApi(client)
result = api.check_post(FreeToolCheckPostRequest.from_dict({"text": "Big news: https://postboost.co #launch", "networks": ["x", "instagram"]}))
print(result.to_dict())
import { FreeToolsApi } from 'postboost';
const api = new FreeToolsApi();
const { body } = await api.checkPost({ text: "Big news: https://postboost.co #launch", networks: ["x", "instagram"] });
console.log(body);
use PostBoostClient\Api\FreeToolsApi;
use PostBoostClient\Model\FreeToolCheckPostRequest;
$api = new FreeToolsApi(new GuzzleHttp\Client());
$result = $api->checkPost(new FreeToolCheckPostRequest(['text' => "Big news: https://postboost.co #launch", 'networks' => ["x", "instagram"]]));
echo $result;
import (
"context"
"encoding/json"
"fmt"
postboost "github.com/postboost-co/postboost-go"
)
var request postboost.FreeToolCheckPostRequest
if err := json.Unmarshal([]byte(`{"text":"Big news: https://postboost.co #launch","networks":["x","instagram"]}`), &request); err != nil {
panic(err)
}
client := postboost.NewAPIClient(postboost.NewConfiguration())
result, _, err := client.FreeToolsAPI.CheckPost(context.Background()).FreeToolCheckPostRequest(request).Execute()
fmt.Println(result, err)
require 'postboost'
api = PostBoost::FreeToolsApi.new
result = api.check_post(PostBoost::FreeToolCheckPostRequest.new({ text: "Big news: https://postboost.co #launch", networks: ["x", "instagram"] }))
puts result.to_hash
import com.postboost.ApiClient;
import com.postboost.api.FreeToolsApi;
import com.postboost.model.FreeToolCheckPostRequest;
import com.postboost.model.FreeToolCheckPostResponse;
FreeToolsApi api = new FreeToolsApi(new ApiClient());
FreeToolCheckPostRequest request = FreeToolCheckPostRequest.fromJson("{\"text\":\"Big news: https://postboost.co #launch\",\"networks\":[\"x\",\"instagram\"]}");
FreeToolCheckPostResponse result = api.checkPost(request);
System.out.println(result.toJson());
using Newtonsoft.Json;
using PostBoost.Client.Api;
using PostBoost.Client.Client;
using PostBoost.Client.Model;
var api = new FreeToolsApi(new Configuration());
var request = JsonConvert.DeserializeObject<FreeToolCheckPostRequest>(@"{""text"":""Big news: https://postboost.co #launch"",""networks"":[""x"",""instagram""]}");
var result = await api.CheckPostAsync(request);
Console.WriteLine(result.ToJson());
use postboost::apis::configuration::Configuration;
use postboost::apis::free_tools_api;
use postboost::models::FreeToolCheckPostRequest;
let config = Configuration::new();
let request: FreeToolCheckPostRequest = serde_json::from_str(r##"{"text":"Big news: https://postboost.co #launch","networks":["x","instagram"]}"##)?;
let result = free_tools_api::check_post(&config, request).await?;
println!("{:?}", result);
echo '{"text":"Big news: https://postboost.co #launch","networks":["x","instagram"]}' | ./postboost-cli --content-type application/json checkPost -
With a token, send Authorization: Bearer YOUR_API_TOKEN as a default header (how, per SDK).
Response
{
"networks": [
{
"key": "x",
"label": "X (Twitter) post",
"ok": true,
"count": 41,
"limit": 280,
"errors": [],
"warnings": []
},
{
"key": "instagram",
"label": "Instagram caption",
"ok": false,
"count": 38,
"limit": 2200,
"errors": [
{
"code": "media_required",
"message": "Add media: posts here need an image or a video to publish."
}
],
"warnings": [
{
"code": "link_not_clickable",
"message": "Links in the text are not clickable here; point people to the link in your bio or a Story link sticker."
}
]
}
]
}
With MCP
Connect https://postboost.co/mcp/tools (setup) and ask, for example: Check a post against each network's publishing rules with the PostBoost check-post tool.
Errors
| Status | When |
|---|---|
401 | The Authorization header holds an invalid token. Leave it out to call as a guest. |
413 | The JSON body is larger than 128 KB. |
422 | A field is invalid; the body lists the errors per field. |
429 | A limit is reached; see limits. |