Instagram carousel splitter API
Pick a wide image, choose how many slides and their shape, and download slices that line up edge to edge when people swipe. Your image never leaves your browser.
- Endpoint:
POST https://postboost.co/app/api/tools/instagram-carousel-splitter(operationIdcalculateCarouselSlices) - Web tool: postboost.co/tools/instagram-carousel-splitter
- Token: optional (limits)
- MCP: tool
calculate-carousel-slicesonhttps://postboost.co/mcp/tools
Request
| Field | Type | Default | Description |
|---|---|---|---|
width | integer | Source image width in pixels. | |
height | integer | Source image height in pixels. | |
slides | integer | Number of carousel slides, 2 to 10 (the most a carousel published through the Instagram API can hold). | |
ratio | string: 1:1, 4:5 | "4:5" | Shape of each slide: 1:1 (1080 × 1080) or 4:5 (1080 × 1350). |
Call it
- curl
- Python
- Node.js
- PHP
- Go
- Ruby
- Java
- C#
- Rust
- CLI
curl -X POST https://postboost.co/app/api/tools/instagram-carousel-splitter \
-H 'Content-Type: application/json' \
-d '{"width":3240,"height":1350,"slides":3,"ratio":"4:5"}'
from postboost import ApiClient, Configuration
from postboost.api.free_tools_api import FreeToolsApi
from postboost.models import FreeToolCalculateCarouselSlicesRequest
with ApiClient(Configuration()) as client:
api = FreeToolsApi(client)
result = api.calculate_carousel_slices(FreeToolCalculateCarouselSlicesRequest.from_dict({"width": 3240, "height": 1350, "slides": 3, "ratio": "4:5"}))
print(result.to_dict())
import { FreeToolsApi } from 'postboost';
const api = new FreeToolsApi();
const { body } = await api.calculateCarouselSlices({ width: 3240, height: 1350, slides: 3, ratio: "4:5" });
console.log(body);
use PostBoostClient\Api\FreeToolsApi;
use PostBoostClient\Model\FreeToolCalculateCarouselSlicesRequest;
$api = new FreeToolsApi(new GuzzleHttp\Client());
$result = $api->calculateCarouselSlices(new FreeToolCalculateCarouselSlicesRequest(['width' => 3240, 'height' => 1350, 'slides' => 3, 'ratio' => "4:5"]));
echo $result;
import (
"context"
"encoding/json"
"fmt"
postboost "github.com/postboost-co/postboost-go"
)
var request postboost.FreeToolCalculateCarouselSlicesRequest
if err := json.Unmarshal([]byte(`{"width":3240,"height":1350,"slides":3,"ratio":"4:5"}`), &request); err != nil {
panic(err)
}
client := postboost.NewAPIClient(postboost.NewConfiguration())
result, _, err := client.FreeToolsAPI.CalculateCarouselSlices(context.Background()).FreeToolCalculateCarouselSlicesRequest(request).Execute()
fmt.Println(result, err)
require 'postboost'
api = PostBoost::FreeToolsApi.new
result = api.calculate_carousel_slices(PostBoost::FreeToolCalculateCarouselSlicesRequest.new({ width: 3240, height: 1350, slides: 3, ratio: "4:5" }))
puts result.to_hash
import com.postboost.ApiClient;
import com.postboost.api.FreeToolsApi;
import com.postboost.model.FreeToolCalculateCarouselSlicesRequest;
import com.postboost.model.FreeToolCalculateCarouselSlicesResponse;
FreeToolsApi api = new FreeToolsApi(new ApiClient());
FreeToolCalculateCarouselSlicesRequest request = FreeToolCalculateCarouselSlicesRequest.fromJson("{\"width\":3240,\"height\":1350,\"slides\":3,\"ratio\":\"4:5\"}");
FreeToolCalculateCarouselSlicesResponse result = api.calculateCarouselSlices(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<FreeToolCalculateCarouselSlicesRequest>(@"{""width"":3240,""height"":1350,""slides"":3,""ratio"":""4:5""}");
var result = await api.CalculateCarouselSlicesAsync(request);
Console.WriteLine(result.ToJson());
use postboost::apis::configuration::Configuration;
use postboost::apis::free_tools_api;
use postboost::models::FreeToolCalculateCarouselSlicesRequest;
let config = Configuration::new();
let request: FreeToolCalculateCarouselSlicesRequest = serde_json::from_str(r##"{"width":3240,"height":1350,"slides":3,"ratio":"4:5"}"##)?;
let result = free_tools_api::calculate_carousel_slices(&config, request).await?;
println!("{:?}", result);
echo '{"width":3240,"height":1350,"slides":3,"ratio":"4:5"}' | ./postboost-cli --content-type application/json calculateCarouselSlices -
With a token, send Authorization: Bearer YOUR_API_TOKEN as a default header (how, per SDK).
Response
{
"slides": [
{
"x": 0,
"y": 0,
"width": 1080,
"height": 1350
},
{
"x": 1080,
"y": 0,
"width": 1080,
"height": 1350
},
{
"x": 2160,
"y": 0,
"width": 1080,
"height": 1350
}
],
"output": {
"width": 1080,
"height": 1350
},
"scale": 1,
"upscaled": false,
"warnings": []
}
With MCP
Connect https://postboost.co/mcp/tools (setup) and ask, for example: Split a wide image into seamless Instagram carousel slides with the PostBoost calculate-carousel-slices 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. |