Paste one public X post — or a whole thread (one URL per line) — and get a single clean image for your newsletter or blog. No signup. Built on the PostShot API.
Want this in your app?
One call returns an image — a single post or a whole thread stacked into one. Light/dark, custom caption, CDN-cached (fast). Free tier: 50/month — then $5/mo for 1,000, up to 60,000 on higher plans.
GET /xcard?urls=url1,url2,url3&theme=dark
Get an API key →
PostShot is a tweet-to-image API: give it a single post or a whole thread and get back a clean, CDN-cached picture, without running your own headless browser or scraping X. The free tool below is the same engine, so the image you preview here is exactly what your app would render.
How it works
Paste the link to a public X (Twitter) post and PostShot renders it as a clean, self-contained image — avatar, name, text, and formatting intact — with no surrounding UI clutter. Add more URLs, one per line, and it stacks a whole thread into a single image. Pick light or dark, add an optional caption, and the result is CDN-cached for fast reuse. The same GET /xcard call powers your app.
Use cases
- Embedding tweets in newsletters and emails that strip live embeds
- Clean screenshots for blog posts, slides, and case studies
- Turning a thread into one shareable image for LinkedIn or Instagram
- Archiving posts as images before they're edited or deleted
- Auto-generating social proof cards from customer tweets
FAQ
- Can it render a whole thread?
- Yes — paste one URL per line and PostShot stacks the posts into a single image, in order.
- Light or dark theme?
- Both. Choose a theme and add an optional caption or branding line; the image is generated to match.
- What about private or deleted posts?
- Only public posts can be rendered — private, protected, or deleted posts aren't accessible and will return an error.
- Is it free?
- Yes — free to try here, no signup. The PostShot API has a free tier of 50 images/month; paid plans start at $5/mo for 1,000 and scale to 60,000.
API reference
Call it through RapidAPI. Base host: postshot-tweet-to-image.p.rapidapi.com. Send your key as X-RapidAPI-Key and the host as X-RapidAPI-Host.
GET/xcard
Render a public X/Twitter post — or a thread — into one clean image. 302-redirects to the image by default; add json=true for { url }.
| Param | Type | Description |
| urlone required | string | A single public post URL, e.g. https://x.com/user/status/123. |
| urlsone required | string | Comma-separated post URLs (up to 8) stacked into one image — the thread→image case. |
| themeopt | string | light (default) or dark. |
| bgopt | string | Custom background hex (e.g. F5F8FA), overrides the theme. |
| threadopt | boolean | Keep the parent thread context for a single post. |
| captionopt | string | Optional footer text (≤140 chars) under the card. |
| jsonopt | boolean | true → { url }; otherwise a 302 redirect to the PNG. |
Returns a 302 redirect to the PNG, or { url, cached, posts } when json=true. Public posts only.
curl -G "https://postshot-tweet-to-image.p.rapidapi.com/xcard" \
--data-urlencode "url=https://x.com/user/status/123" \
-d "theme=dark" -d "json=true" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: postshot-tweet-to-image.p.rapidapi.com"