Social media video sizes and lengths cheat sheet API
Ratio, resolution, length and file size limits for every major network, each with its source, plus a checker that tells you which networks your video fits without uploading it.
- Endpoint:
GET https://postboost.co/app/api/tools/social-media-video-specs(operationIdgetVideoSpecs) - Web tool: postboost.co/tools/social-media-video-specs
- Token: optional (limits)
- MCP: tool
get-video-specsonhttps://postboost.co/mcp/tools
Request
| Query parameter | Type | Default | Description |
|---|---|---|---|
network | string | Network key, e.g. tiktok. Omit it for every network; an unknown key is a 422 that lists the allowed ones. |
Call it
- curl
- Python
- Node.js
- PHP
- Go
- Ruby
- Java
- C#
- Rust
- CLI
curl 'https://postboost.co/app/api/tools/social-media-video-specs?network=tiktok'
from postboost import ApiClient, Configuration
from postboost.api.free_tools_api import FreeToolsApi
with ApiClient(Configuration()) as client:
api = FreeToolsApi(client)
result = api.get_video_specs(network='tiktok')
print(result.to_dict())
import { FreeToolsApi } from 'postboost';
const api = new FreeToolsApi();
const { body } = await api.getVideoSpecs('tiktok');
console.log(body);
use PostBoostClient\Api\FreeToolsApi;
$api = new FreeToolsApi(new GuzzleHttp\Client());
$result = $api->getVideoSpecs("tiktok");
echo $result;
import (
"context"
"fmt"
postboost "github.com/postboost-co/postboost-go"
)
client := postboost.NewAPIClient(postboost.NewConfiguration())
result, _, err := client.FreeToolsAPI.GetVideoSpecs(context.Background()).Network("tiktok").Execute()
fmt.Println(result, err)
require 'postboost'
api = PostBoost::FreeToolsApi.new
result = api.get_video_specs(network: 'tiktok')
puts result.to_hash
import com.postboost.ApiClient;
import com.postboost.api.FreeToolsApi;
import com.postboost.model.FreeToolGetVideoSpecsResponse;
FreeToolsApi api = new FreeToolsApi(new ApiClient());
FreeToolGetVideoSpecsResponse result = api.getVideoSpecs("tiktok");
System.out.println(result.toJson());
using PostBoost.Client.Api;
using PostBoost.Client.Client;
var api = new FreeToolsApi(new Configuration());
var result = await api.GetVideoSpecsAsync("tiktok");
Console.WriteLine(result.ToJson());
use postboost::apis::configuration::Configuration;
use postboost::apis::free_tools_api;
let config = Configuration::new();
let result = free_tools_api::get_video_specs(&config, Some("tiktok")).await?;
println!("{:?}", result);
./postboost-cli getVideoSpecs network='tiktok'
With a token, send Authorization: Bearer YOUR_API_TOKEN as a default header (how, per SDK).
Response
{
"specs": [
{
"network": "TikTok",
"placement": "Video (Content Posting API)",
"ratio": "Not stated by the API; 9:16 is common",
"resolution": "360–4096 px per side; 23–60 fps; 1080×1920 is common",
"length": "Up to 10 min through the API; each creator's maximum (often 3 min) comes from the creator info call",
"max_size": "4 GB",
"formats": "MP4 (recommended), WebM, MOV; H.264 recommended, H.265, VP8, VP9",
"safe_zone": "TikTok publishes templates only, no pixel values",
"basis": "official",
"sources": [
"https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
],
"limits": {
"min_seconds": null,
"max_seconds": 600,
"warn_over_seconds": 180,
"min_ratio": null,
"max_ratio": null,
"recommended_ratio": null,
"max_mb": 4096
},
"network_key": "tiktok",
"placement_key": "video-content-posting-api"
}
],
"last_verified": "2026-10-14",
"sources": []
}
With MCP
Connect https://postboost.co/mcp/tools (setup) and ask, for example: Get social media video ratios, resolutions, lengths and file size limits per network, with sources with the PostBoost get-video-specs 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. |