Free social media audit template and scorecard API
Tick the networks you want to audit and answer eight quick questions for each: profile, bio, tracked link, posting rhythm, replies, formats, pinned post and engagement rate. You get a score out of 100 per network and overall, plus the three fixes that matter most. No signup and no email.
- Endpoint:
POST https://postboost.co/app/api/tools/social-media-audit-template(operationIdscoreSocialAudit) - Web tool: postboost.co/tools/social-media-audit-template
- Token: optional (limits)
- MCP: tool
score-social-auditonhttps://postboost.co/mcp/tools
Request
| Field | Type | Default | Description |
|---|---|---|---|
target_posts_per_week | integer | 3 | Your own posting target per network and week, used in the frequency question. |
instagram | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
facebook | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
linkedin | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
x | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
tiktok | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
youtube | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
pinterest | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
threads | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
bluesky | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. | |
mastodon | object | Your answers for this network: yes, partly or no per question (a missing answer counts as no). Leave the network out to skip it. |
Call it
- curl
- Python
- Node.js
- PHP
- Go
- Ruby
- Java
- C#
- Rust
- CLI
curl -X POST https://postboost.co/app/api/tools/social-media-audit-template \
-H 'Content-Type: application/json' \
-d '{"target_posts_per_week":4,"instagram":{"profile":"yes","bio":"yes","link_tracking":"no","frequency":"partly","replies":"yes","native_formats":"yes","pinned":"no","engagement_rate":"partly"},"linkedin":{"profile":"yes","bio":"partly","link_tracking":"no","frequency":"yes","replies":"partly","native_formats":"no","pinned":"yes","engagement_rate":"no"}}'
from postboost import ApiClient, Configuration
from postboost.api.free_tools_api import FreeToolsApi
from postboost.models import FreeToolScoreSocialAuditRequest
with ApiClient(Configuration()) as client:
api = FreeToolsApi(client)
result = api.score_social_audit(FreeToolScoreSocialAuditRequest.from_dict({"target_posts_per_week": 4, "instagram": {"profile": "yes", "bio": "yes", "link_tracking": "no", "frequency": "partly", "replies": "yes", "native_formats": "yes", "pinned": "no", "engagement_rate": "partly"}, "linkedin": {"profile": "yes", "bio": "partly", "link_tracking": "no", "frequency": "yes", "replies": "partly", "native_formats": "no", "pinned": "yes", "engagement_rate": "no"}}))
print(result.to_dict())
import { FreeToolsApi } from 'postboost';
const api = new FreeToolsApi();
const { body } = await api.scoreSocialAudit({ targetPostsPerWeek: 4, instagram: { profile: "yes", bio: "yes", linkTracking: "no", frequency: "partly", replies: "yes", nativeFormats: "yes", pinned: "no", engagementRate: "partly" }, linkedin: { profile: "yes", bio: "partly", linkTracking: "no", frequency: "yes", replies: "partly", nativeFormats: "no", pinned: "yes", engagementRate: "no" } });
console.log(body);
use PostBoostClient\Api\FreeToolsApi;
use PostBoostClient\Model\FreeToolScoreSocialAuditRequest;
$api = new FreeToolsApi(new GuzzleHttp\Client());
$result = $api->scoreSocialAudit(new FreeToolScoreSocialAuditRequest(['target_posts_per_week' => 4, 'instagram' => ['profile' => "yes", 'bio' => "yes", 'link_tracking' => "no", 'frequency' => "partly", 'replies' => "yes", 'native_formats' => "yes", 'pinned' => "no", 'engagement_rate' => "partly"], 'linkedin' => ['profile' => "yes", 'bio' => "partly", 'link_tracking' => "no", 'frequency' => "yes", 'replies' => "partly", 'native_formats' => "no", 'pinned' => "yes", 'engagement_rate' => "no"]]));
echo $result;
import (
"context"
"encoding/json"
"fmt"
postboost "github.com/postboost-co/postboost-go"
)
var request postboost.FreeToolScoreSocialAuditRequest
if err := json.Unmarshal([]byte(`{"target_posts_per_week":4,"instagram":{"profile":"yes","bio":"yes","link_tracking":"no","frequency":"partly","replies":"yes","native_formats":"yes","pinned":"no","engagement_rate":"partly"},"linkedin":{"profile":"yes","bio":"partly","link_tracking":"no","frequency":"yes","replies":"partly","native_formats":"no","pinned":"yes","engagement_rate":"no"}}`), &request); err != nil {
panic(err)
}
client := postboost.NewAPIClient(postboost.NewConfiguration())
result, _, err := client.FreeToolsAPI.ScoreSocialAudit(context.Background()).FreeToolScoreSocialAuditRequest(request).Execute()
fmt.Println(result, err)
require 'postboost'
api = PostBoost::FreeToolsApi.new
result = api.score_social_audit(PostBoost::FreeToolScoreSocialAuditRequest.new({ target_posts_per_week: 4, instagram: { profile: "yes", bio: "yes", link_tracking: "no", frequency: "partly", replies: "yes", native_formats: "yes", pinned: "no", engagement_rate: "partly" }, linkedin: { profile: "yes", bio: "partly", link_tracking: "no", frequency: "yes", replies: "partly", native_formats: "no", pinned: "yes", engagement_rate: "no" } }))
puts result.to_hash
import com.postboost.ApiClient;
import com.postboost.api.FreeToolsApi;
import com.postboost.model.FreeToolScoreSocialAuditRequest;
import com.postboost.model.FreeToolScoreSocialAuditResponse;
FreeToolsApi api = new FreeToolsApi(new ApiClient());
FreeToolScoreSocialAuditRequest request = FreeToolScoreSocialAuditRequest.fromJson("{\"target_posts_per_week\":4,\"instagram\":{\"profile\":\"yes\",\"bio\":\"yes\",\"link_tracking\":\"no\",\"frequency\":\"partly\",\"replies\":\"yes\",\"native_formats\":\"yes\",\"pinned\":\"no\",\"engagement_rate\":\"partly\"},\"linkedin\":{\"profile\":\"yes\",\"bio\":\"partly\",\"link_tracking\":\"no\",\"frequency\":\"yes\",\"replies\":\"partly\",\"native_formats\":\"no\",\"pinned\":\"yes\",\"engagement_rate\":\"no\"}}");
FreeToolScoreSocialAuditResponse result = api.scoreSocialAudit(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<FreeToolScoreSocialAuditRequest>(@"{""target_posts_per_week"":4,""instagram"":{""profile"":""yes"",""bio"":""yes"",""link_tracking"":""no"",""frequency"":""partly"",""replies"":""yes"",""native_formats"":""yes"",""pinned"":""no"",""engagement_rate"":""partly""},""linkedin"":{""profile"":""yes"",""bio"":""partly"",""link_tracking"":""no"",""frequency"":""yes"",""replies"":""partly"",""native_formats"":""no"",""pinned"":""yes"",""engagement_rate"":""no""}}");
var result = await api.ScoreSocialAuditAsync(request);
Console.WriteLine(result.ToJson());
use postboost::apis::configuration::Configuration;
use postboost::apis::free_tools_api;
use postboost::models::FreeToolScoreSocialAuditRequest;
let config = Configuration::new();
let request: FreeToolScoreSocialAuditRequest = serde_json::from_str(r##"{"target_posts_per_week":4,"instagram":{"profile":"yes","bio":"yes","link_tracking":"no","frequency":"partly","replies":"yes","native_formats":"yes","pinned":"no","engagement_rate":"partly"},"linkedin":{"profile":"yes","bio":"partly","link_tracking":"no","frequency":"yes","replies":"partly","native_formats":"no","pinned":"yes","engagement_rate":"no"}}"##)?;
let result = free_tools_api::score_social_audit(&config, request).await?;
println!("{:?}", result);
echo '{"target_posts_per_week":4,"instagram":{"profile":"yes","bio":"yes","link_tracking":"no","frequency":"partly","replies":"yes","native_formats":"yes","pinned":"no","engagement_rate":"partly"},"linkedin":{"profile":"yes","bio":"partly","link_tracking":"no","frequency":"yes","replies":"partly","native_formats":"no","pinned":"yes","engagement_rate":"no"}}' | ./postboost-cli --content-type application/json scoreSocialAudit -
With a token, send Authorization: Bearer YOUR_API_TOKEN as a default header (how, per SDK).
Response
{
"score": 56,
"networks": [
{
"network": "instagram",
"label": "Instagram",
"score": 63,
"points": 10,
"max_points": 16,
"items": [
{
"key": "profile",
"question": "Profile photo, name and cover image match your brand",
"answer": "yes",
"points": 2
},
{
"key": "bio",
"question": "Your bio says who you help and how, and has a link",
"answer": "yes",
"points": 2
},
{
"key": "link_tracking",
"question": "The bio link carries UTM tags",
"answer": "no",
"points": 0
},
{
"key": "frequency",
"question": "You publish at least 4 posts a week, your own target",
"answer": "partly",
"points": 1
},
{
"key": "replies",
"question": "You reply to comments and messages within 24 hours",
"answer": "yes",
"points": 2
},
{
"key": "native_formats",
"question": "You use the formats the network is built for, such as short video, carousels or documents",
"answer": "yes",
"points": 2
},
{
"key": "pinned",
"question": "Your pinned or featured post is current",
"answer": "no",
"points": 0
},
{
"key": "engagement_rate",
"question": "You check your engagement rate every month",
"answer": "partly",
"points": 1
}
]
},
{
"network": "linkedin",
"label": "LinkedIn",
"score": 50,
"points": 8,
"max_points": 16,
"items": [
{
"key": "profile",
"question": "Profile photo, name and cover image match your brand",
"answer": "yes",
"points": 2
},
{
"key": "bio",
"question": "Your bio says who you help and how, and has a link",
"answer": "partly",
"points": 1
},
{
"key": "link_tracking",
"question": "The bio link carries UTM tags",
"answer": "no",
"points": 0
},
{
"key": "frequency",
"question": "You publish at least 4 posts a week, your own target",
"answer": "yes",
"points": 2
},
{
"key": "replies",
"question": "You reply to comments and messages within 24 hours",
"answer": "partly",
"points": 1
},
{
"key": "native_formats",
"question": "You use the formats the network is built for, such as short video, carousels or documents",
"answer": "no",
"points": 0
},
{
"key": "pinned",
"question": "Your pinned or featured post is current",
"answer": "yes",
"points": 2
},
{
"key": "engagement_rate",
"question": "You check your engagement rate every month",
"answer": "no",
"points": 0
}
]
}
],
"top_fixes": [
{
"key": "link_tracking",
"question": "The bio link carries UTM tags",
"tip": "Add UTM tags to the bio link, so your analytics show how many visitors this network sends.",
"networks": [
"Instagram",
"LinkedIn"
]
},
{
"key": "engagement_rate",
"question": "You check your engagement rate every month",
"tip": "Work out your engagement rate once a month and compare it with your own last month.",
"networks": [
"Instagram",
"LinkedIn"
]
},
{
"key": "native_formats",
"question": "You use the formats the network is built for, such as short video, carousels or documents",
"tip": "Turn a recent post that did well into a format this network offers, such as a short video or a carousel.",
"networks": [
"LinkedIn"
]
}
],
"report_markdown": "# Social media audit\n\nOverall score: 56/100\n\n- Instagram: 63/100\n- LinkedIn: 50/100\n\n## Top fixes\n\n1. The bio link carries UTM tags (Instagram, LinkedIn): Add UTM tags to the bio link, so your analytics show how many visitors this network sends.\n2. You check your engagement rate every month (Instagram, LinkedIn): Work out your engagement rate once a month and compare it with your own last month.\n3. You use the formats the network is built for, such as short video, carousels or documents (LinkedIn): Turn a recent post that did well into a format this network offers, such as a short video or a carousel.\n\n## Instagram: 63/100\n\n- Yes: Profile photo, name and cover image match your brand\n- Yes: Your bio says who you help and how, and has a link\n- No: The bio link carries UTM tags\n- Partly: You publish at least 4 posts a week, your own target\n- Yes: You reply to comments and messages within 24 hours\n- Yes: You use the formats the network is built for, such as short video, carousels or documents\n- No: Your pinned or featured post is current\n- Partly: You check your engagement rate every month\n\n## LinkedIn: 50/100\n\n- Yes: Profile photo, name and cover image match your brand\n- Partly: Your bio says who you help and how, and has a link\n- No: The bio link carries UTM tags\n- Yes: You publish at least 4 posts a week, your own target\n- Partly: You reply to comments and messages within 24 hours\n- No: You use the formats the network is built for, such as short video, carousels or documents\n- Yes: Your pinned or featured post is current\n- No: You check your engagement rate every month\n"
}
With MCP
Connect https://postboost.co/mcp/tools (setup) and ask, for example: Score a social media audit checklist and get the top fixes with the PostBoost score-social-audit 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. |