Social posts
One product launch gets a distinct post for each network: a short, punchy line with room for a photo in one place, a fuller paragraph with context in another. You give the idea and the destination. You pay per use, with no subscription.
Run it online
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 same announcement doesn't belong on every platform in the same shape — a caption that works next to a photo reads as padding under a link, and a line built for a fast-scrolling feed falls flat as a standalone post.
One idea, a different shape for every network
The same announcement does not belong on every network in the same shape. A caption that works next to a photo reads as padding under a link, and a line built for a fast-scrolling feed falls flat as a standalone post. Those differences are not arbitrary style choices: character limits shaped brevity, image-first feeds rewarded captions that complement the visual rather than repeat it, and professional networks favored a more explanatory register. Copy that ignores them reads as slightly off even when the message itself is solid. This tool takes one idea and the network you choose and writes the post that network expects.
Keeping a posting rhythm without a dedicated writer
A product update, a hiring announcement or an event reminder usually comes down to one sentence of fact, but the post around it needs a different length, register and structure depending on where it lands. Writing every version by hand is where social calendars quietly stall, especially for teams without a social copywriter. Marketing teams batch a week of posts at once and spend their time reviewing and scheduling instead. A founder running their own account feeds in a milestone the moment it happens instead of saving it for a weekend. The result respects the norms of the network you picked rather than handing you one generic paragraph to trim.
Platform norms didn't happen by accident
Each social format evolved around real constraints and real reading habits: character limits shaped brevity, image-first feeds rewarded a caption that complements rather than repeats the visual, and professional networks favored a more explanatory register than a consumer feed does. Those aren't arbitrary style choices — they're what each audience has been trained by years of habit to expect, and copy that ignores them reads as slightly off even when the message itself is solid.
What you can do with it
Weekly content batching for a small marketing team
A team drafts a week's worth of posts across platforms in one sitting, then reviews and schedules instead of writing live each morning.
Announcing the same update everywhere it needs to land
A product launch gets a distinct, platform-appropriate post for each channel instead of one paragraph copied everywhere.
Solo founders keeping a consistent posting rhythm
A founder without a social hire drafts posts around product milestones so the account doesn't go quiet between launches.
Event and campaign reminders across channels
An events team generates reminder posts fit for each platform as a deadline or event date approaches.
FAQ
Can I generate posts in bulk for a content calendar?
Yes, each idea is its own async request, so a month's calendar is simply a batch of requests submitted together.
Is my input data kept after the post is generated?
No, submitted ideas and generated posts are deleted after the retention window and are never used for training.
Can I get the same announcement for several networks?
Yes. Send the same core idea once for each network you need and every version comes back in the shape that network rewards, so a product launch gets a distinct post per channel instead of one paragraph copied everywhere.
Why not post the same text everywhere?
Because each format grew around real limits and habits. A caption beside a photo should complement the image, a professional network expects more explanation, and a line built for a fast feed falls flat on its own, so copied text reads slightly off.
Who is the social post generator useful for?
Small marketing teams that draft a week of posts in one sitting, solo founders who keep an account active between launches, and events teams that need reminders fitted to each channel as a deadline or event date approaches.
Related tools
For developers — API access
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.
API endpoint
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, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/text/social-post \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos.","platform":"linkedin"}'const res = await fetch("https://api.kit.forhosting.com/text/social-post", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "El informe trimestral cerró con 1,2 M€ de ingresos.",
"platform": "linkedin"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/social-post",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "El informe trimestral cerró con 1,2 M€ de ingresos.",
"platform": "linkedin"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/social-post", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos.","platform":"linkedin"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"El informe trimestral cerró con 1,2 M€ de ingresos.","platform":"linkedin"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/social-post", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"text": "El informe trimestral cerró con 1,2 M€ de ingresos.",
"platform": "linkedin"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.social_post",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_tokens | 20000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
422 | task_failed | The task failed after 3 retries. You are never charged for it. |
Technical notes
This endpoint takes one idea and writes it the way each destination actually expects it.
One idea, several very different containers
A product update, a hiring announcement, an event reminder — the underlying fact is one sentence, but the post built around it needs a different shape depending on where it lands: a short, punchy line with room for a photo in one place, a fuller paragraph with context in another. Writing all of those by hand for every announcement is where social calendars quietly stall, especially for teams without a dedicated social copywriter. text.social_post exists to write the shape each platform actually rewards, from a single input.
From one idea to platform-ready copy
Output respects the norms of the platform requested — length, tone, structure — rather than producing one generic paragraph and letting you trim it down by hand. POST /text/social-post with the core idea and your target platform, get a task_id right away, and the drafted post arrives by signed webhook or a signed link valid for 24 hours once the async task completes.
Fitting into a real posting calendar
A single founder running their own account uses it the same way at smaller scale, to keep a consistent posting rhythm without a dedicated writer, feeding in a milestone the moment it happens instead of saving it for a weekend writing session. Marketing teams typically batch a week's announcements through this endpoint at once, generating platform-specific drafts for each and reviewing before scheduling, rather than writing every post live the day it's meant to go out. Priced per request plus per post, cost scales with how much you actually publish, and a failed task is never charged.
Technical questions
How do I generate a social media post with the API?
POST your core idea and target platform to /text/social-post, keep the task_id, and collect the drafted post by webhook or a signed link valid for 24 hours.
Is the social media post generator API free?
No, there's no free tier or trial; it costs $0.003 per request plus $0.0135 per post, and a failed task is never charged.
Which platforms does it write for?
The major social and professional networks; specify the target platform in the request and check the endpoint reference for the current list.
Can it generate the same idea for multiple platforms at once?
Each request targets one platform, so covering several means submitting one request per platform, which keeps each draft correctly shaped rather than generic.
Does it include hashtags automatically?
This endpoint focuses on the post copy itself; pair it with the dedicated hashtag generator endpoint for tag suggestions.
Is this endpoint live yet?
Yes, it's live and accepting requests now.