ForHosting KIT · Images

Resize for social media

Send one source image to our social media image resizer API and get back the full set of platform-specific crops and sizes your team needs to post everywhere, without re-exporting the same asset a dozen times by hand. It exists because 'resize for social' quietly means a different aspect ratio for nearly every destination.

● StablePer request + per set$0.002
Use it from WebAPIEmailApp soonTelegram soon

Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.

The problem: one asset, many aspect ratios

A single campaign image rarely fits every platform as-is — a square post crop, a vertical story crop, a wide feed banner, and a profile-safe crop are each a different shape, and getting even one wrong means an important part of the image gets cut off or squeezed. Marketing and social teams end up doing this resizing manually, over and over, for every new asset. POST /image/social-variants exists to do that whole batch in one asynchronous call.

How the request works

You submit your source image once, the task queues and returns a task_id immediately so nothing blocks on image processing, and the full set of resized variants is delivered afterward via signed webhook or a signed link that stays valid for 24 hours. Because the output is a defined set rather than a single file, it maps cleanly onto a 'generate variants, then publish' workflow.

Why aspect ratios diverged in the first place

Social platforms did not converge on one shape because they solve different display problems: a feed wants a wide or square crop that reads well scrolling past quickly, a story format wants a full vertical frame for a phone screen, and a profile or thumbnail wants a small crop that still reads at a glance. Each constraint arrived at a different point as mobile-first and story-style formats grew, which is why the resizing checklist for a single campaign image has only gotten longer over time, not shorter.

Fitting it into a publishing workflow

Because generation is async and asset-based, it drops naturally into a content pipeline: a design system exports one master image, the API produces the platform set, and a scheduling tool picks up each variant from the webhook payload to queue the post. No one has to remember which platform wants which crop this quarter.

What determines output quality

Each variant is generated directly from your source image at the resolution the target size needs, so a sharp, high-resolution source produces sharp variants across the set — the endpoint crops and resizes intelligently but does not fabricate detail that was not present in the original.

Multi-platform campaign launch

Turn one campaign hero image into every crop needed to post the same launch across feed, story, and profile formats simultaneously.

Content calendar automation

Feed each new asset through the API as it enters a scheduling tool so every post is pre-sized before a human ever touches it.

Agency asset delivery

Deliver a client's approved image to a design system that automatically produces every platform variant for their social accounts.

E-commerce product promotion

Resize a product photo into every format needed to promote it across a brand's full set of social channels at once.

How does the social media image resizer API work?

You send one source image to POST /image/social-variants; it returns a task_id immediately and delivers the full set of resized variants afterward via webhook or a signed link valid for 24 hours.

Is resizing images for social media free?

There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.

What does generating a variant set cost?

Each request is $0.002 plus $0.005 per set of variants produced, billed only when generation completes successfully.

Which platform sizes are included?

The set covers the aspect ratios commonly needed across feed, story, and profile-style placements, generated together from your one source image.

Do I need to prepare crops for each platform myself?

No, that's the point of the endpoint — you submit one master image and it handles the resizing and cropping for the full set of target sizes.

Am I charged if a resize job fails?

No. A failed task retries automatically up to three times and is never billed if it doesn't ultimately succeed.

Can I process many source images in bulk?

Yes, each source image is submitted as its own asynchronous request, so you can queue an entire content batch and track each by its task_id.

How is this different from manually cropping in an editor?

It replaces repetitive manual re-exporting with one API call per source image, returning the whole platform-ready set instead of one crop at a time.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/image/social-variants

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, and soon from our app, email and Telegram.

curl -X POST https://api.kit.forhosting.com/image/social-variants \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"…"}'
{
  "input": "…"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "image.social_variants",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002
Per set$0.005

Published price — no tokens, no invented credits. A failed task is never charged.

max_mb15
max_megapixels12
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →