Social media manager pricing calculator API
Enter how many networks you manage, how often you post and the extra work, set your own hourly rate, and get the monthly hours, a retainer, a per-post price and a range to quote.
- Endpoint:
POST https://postboost.co/app/api/tools/social-media-manager-pricing-calculator(operationIdcalculateSmmPricing) - Web tool: postboost.co/tools/social-media-manager-pricing-calculator
- Token: optional (limits)
- MCP: tool
calculate-smm-pricingonhttps://postboost.co/mcp/tools
Request
| Field | Type | Default | Description |
|---|---|---|---|
networks | integer | Number of social networks managed. | |
posts_per_week | integer | Posts per week on each network. | |
content_type | string: copy, copy_design, copy_design_video | "copy_design" | What goes into a post. Assumed minutes per post: copy 30, copy_design 60, copy_design_video 120. |
community_hours_per_week | number | 0 | Community management (replies, comments, DMs), hours per week. |
reporting_hours_per_month | number | 0 | Reporting, hours per month. |
ad_hours_per_month | number | 0 | Paid social ad management, hours per month. |
hourly_rate | number | 50 | Your hourly rate. The default 50 is a round placeholder, not a market rate. |
currency | string: USD, EUR, GBP | "USD" | Currency for formatting only; nothing is converted. |
pricing_model | string: hourly, retainer, per_post | "retainer" | Which price leads the quote: hourly, monthly retainer or per 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-manager-pricing-calculator \
-H 'Content-Type: application/json' \
-d '{"networks":3,"posts_per_week":5,"content_type":"copy_design","community_hours_per_week":4,"hourly_rate":50}'
from postboost import ApiClient, Configuration
from postboost.api.free_tools_api import FreeToolsApi
from postboost.models import FreeToolCalculateSmmPricingRequest
with ApiClient(Configuration()) as client:
api = FreeToolsApi(client)
result = api.calculate_smm_pricing(FreeToolCalculateSmmPricingRequest.from_dict({"networks": 3, "posts_per_week": 5, "content_type": "copy_design", "community_hours_per_week": 4, "hourly_rate": 50}))
print(result.to_dict())
import { FreeToolsApi } from 'postboost';
const api = new FreeToolsApi();
const { body } = await api.calculateSmmPricing({ networks: 3, postsPerWeek: 5, contentType: "copy_design", communityHoursPerWeek: 4, hourlyRate: 50 });
console.log(body);
use PostBoostClient\Api\FreeToolsApi;
use PostBoostClient\Model\FreeToolCalculateSmmPricingRequest;
$api = new FreeToolsApi(new GuzzleHttp\Client());
$result = $api->calculateSmmPricing(new FreeToolCalculateSmmPricingRequest(['networks' => 3, 'posts_per_week' => 5, 'content_type' => "copy_design", 'community_hours_per_week' => 4, 'hourly_rate' => 50]));
echo $result;
import (
"context"
"encoding/json"
"fmt"
postboost "github.com/postboost-co/postboost-go"
)
var request postboost.FreeToolCalculateSmmPricingRequest
if err := json.Unmarshal([]byte(`{"networks":3,"posts_per_week":5,"content_type":"copy_design","community_hours_per_week":4,"hourly_rate":50}`), &request); err != nil {
panic(err)
}
client := postboost.NewAPIClient(postboost.NewConfiguration())
result, _, err := client.FreeToolsAPI.CalculateSmmPricing(context.Background()).FreeToolCalculateSmmPricingRequest(request).Execute()
fmt.Println(result, err)
require 'postboost'
api = PostBoost::FreeToolsApi.new
result = api.calculate_smm_pricing(PostBoost::FreeToolCalculateSmmPricingRequest.new({ networks: 3, posts_per_week: 5, content_type: "copy_design", community_hours_per_week: 4, hourly_rate: 50 }))
puts result.to_hash
import com.postboost.ApiClient;
import com.postboost.api.FreeToolsApi;
import com.postboost.model.FreeToolCalculateSmmPricingRequest;
import com.postboost.model.FreeToolCalculateSmmPricingResponse;
FreeToolsApi api = new FreeToolsApi(new ApiClient());
FreeToolCalculateSmmPricingRequest request = FreeToolCalculateSmmPricingRequest.fromJson("{\"networks\":3,\"posts_per_week\":5,\"content_type\":\"copy_design\",\"community_hours_per_week\":4,\"hourly_rate\":50}");
FreeToolCalculateSmmPricingResponse result = api.calculateSmmPricing(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<FreeToolCalculateSmmPricingRequest>(@"{""networks"":3,""posts_per_week"":5,""content_type"":""copy_design"",""community_hours_per_week"":4,""hourly_rate"":50}");
var result = await api.CalculateSmmPricingAsync(request);
Console.WriteLine(result.ToJson());
use postboost::apis::configuration::Configuration;
use postboost::apis::free_tools_api;
use postboost::models::FreeToolCalculateSmmPricingRequest;
let config = Configuration::new();
let request: FreeToolCalculateSmmPricingRequest = serde_json::from_str(r##"{"networks":3,"posts_per_week":5,"content_type":"copy_design","community_hours_per_week":4,"hourly_rate":50}"##)?;
let result = free_tools_api::calculate_smm_pricing(&config, request).await?;
println!("{:?}", result);
echo '{"networks":3,"posts_per_week":5,"content_type":"copy_design","community_hours_per_week":4,"hourly_rate":50}' | ./postboost-cli --content-type application/json calculateSmmPricing -
With a token, send Authorization: Bearer YOUR_API_TOKEN as a default header (how, per SDK).
Response
{
"currency": "USD",
"pricing_model": "retainer",
"posts_per_month": 65,
"hours_per_month": 82.3,
"hourly_rate": 50,
"monthly_retainer": 4117,
"per_post": 63.34,
"range": {
"low": 3294,
"high": 4940
},
"line_items": [
{
"key": "content",
"label": "Content creation and scheduling",
"hours_per_month": 65,
"amount": 3250
},
{
"key": "community",
"label": "Community management",
"hours_per_month": 17.3,
"amount": 866.67
}
],
"assumptions": [
"60 minutes per post (copy + design)",
"A month is 52 ÷ 12 = 4.33 weeks",
"Range: retainer −20% to +20%"
]
}
With MCP
Connect https://postboost.co/mcp/tools (setup) and ask, for example: Estimate social media manager pricing with the PostBoost calculate-smm-pricing 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. |