Tumblr API
Use the Crosspostify API to publish image, multi-image, video, and text posts to Tumblr blogs — the creative platform built for long-form expression, niche communities, and tag-driven discovery.
Tumblr is a long-form blogging and microblogging platform with a passionate creative community. Unlike most social platforms, Tumblr's discovery is almost entirely tag-driven — users follow tags, not just blogs. This makes hashtag strategy critical for reach.
The Crosspostify Tumblr integration supports all four post types: image, multi-image photosets, video, and text. Tumblr is one of the few platforms where title is genuinely useful — it renders as a styled heading above the post body.
This page covers everything specific to Tumblr when using the Crosspostify API. For general authentication, rate limits, and error handling, see the full API Reference.
Tumblr-Specific Parameters
Tumblr uses a clean parameter set with no platform-exclusive fields. Both title and caption are meaningful on Tumblr — title renders as a post heading, and hashtags in caption drive tag-based discovery.
accountId✓ AppliesRequired. Your Tumblr blog ID from /social-accounts.title✓ AppliesOptional but recommended. Renders as a styled heading above the post body. Great for named series or titled essays.caption✓ AppliesThe post body text. Hashtags placed here (e.g. #photography) are indexed as Tumblr tags for discovery.boardId✗ IgnoredPinterest only — Tumblr posts go to your blog directly.is_aigc✗ IgnoredTikTok only — ignored for Tumblr.facebookFirstComment✗ IgnoredFacebook only — ignored for Tumblr.textFormatPresetId✗ IgnoredFacebook only — ignored for Tumblr.privacy✗ IgnoredYouTube only — Tumblr posts are always public to your blog.categoryId✗ IgnoredYouTube only — ignored for Tumblr.tags✗ IgnoredYouTube only — use hashtags inline in caption instead.Tumblr's discovery is almost entirely tag-driven. Crosspostify automatically extracts hashtags from your caption (e.g. #photography) and registers them as Tumblr tags on the post. Users who follow those tags will see your content in their feeds.
Supported Endpoints
Tumblr supports all four Crosspostify post types — including multi-image photosets, which are a native Tumblr format:
/post/imagePhoto PostPublish a single image to a Tumblr blog as a photo post. The image is displayed full-width with the caption below. Ideal for photography, illustration, and visual art.
Image Post Notes
- Images are displayed full-width on the blog — no cropping in the post view
titlerenders as a heading above the image — useful for named series (e.g. "Daily Sketch #42")- Hashtags in
captionare extracted as Tumblr tags for tag-based discovery - Upload your image first via
POST /mediaand use the returnedmediaId - All datetime values must be in UTC timezone (ISO 8601 format with
Zsuffix) - Omit
scheduledDateto post immediately
Request Body
mediaIdstringrequiredThe ID of the uploaded image file. Obtain this from POST /media.
scheduledDatestringoptionalSchedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.
postsarrayrequiredArray of post objects. Include one object per Tumblr blog.
posts[].accountIdstringrequiredThe Tumblr blog ID. Retrieve from GET /social-accounts.
posts[].titlestringoptionalOptional post heading. Rendered above the image on the blog. Great for series titles.
posts[].captionstringoptionalPost body text. Hashtags are extracted as Tumblr tags. Supports line breaks.
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/image" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"mediaId": "img_12345",
"scheduledDate": "2025-06-01T14:00:00Z",
"posts": [
{
"accountId": "acc_tumblr_456",
"title": "Neon Cityscapes at 3am",
"caption": "There\'s something about empty streets and wet pavement that hits different. Shot on a Ricoh GR IIIx. #photography #nightphotography #streetphotography #filmlook"
}
]
}'/post/imagesPhotosetPublish multiple images to a Tumblr blog as a photoset — Tumblr's native multi-image format. Images are displayed in a grid layout and are a staple of Tumblr's visual culture.
Photoset Notes
- Images are displayed in the order provided in
mediaIds - Tumblr automatically arranges images into a grid layout based on count and aspect ratios
- Photosets are a core Tumblr format — great for photo series, mood boards, and travel dumps
- A single shared
captionappears below the entire photoset - All datetime values must be in UTC timezone (ISO 8601 format with
Zsuffix)
Request Body
mediaIdsarrayrequiredOrdered array of image media IDs. Images appear in this order in the photoset.
scheduledDatestringoptionalSchedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.
postsarrayrequiredArray of post objects. Include one object per Tumblr blog.
posts[].accountIdstringrequiredThe Tumblr blog ID. Retrieve from GET /social-accounts.
posts[].titlestringoptionalOptional post heading. Rendered above the photoset. Great for naming a series or trip.
posts[].captionstringoptionalShared caption for the entire photoset. Hashtags are extracted as Tumblr tags.
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/images" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"mediaIds": ["img_001", "img_002", "img_003", "img_004"],
"scheduledDate": "2025-06-01T14:00:00Z",
"posts": [
{
"accountId": "acc_tumblr_456",
"title": "Tokyo Photo Dump — Spring 2025",
"caption": "A week of wandering. Cherry blossoms, convenience stores, and too much matcha. #japan #tokyo #travel #photography"
}
]
}'/post/videoVideo PostPublish a native video to a Tumblr blog. Videos are embedded directly in the post and autoplay in the dashboard feed. Popular for short films, process videos, and creative clips.
Video Post Notes
- Videos are embedded natively and autoplay in the Tumblr dashboard
- Upload your video first via
POST /mediaand use the returnedmediaId titlerenders as a heading above the video player- Tumblr's video audience skews toward creative and artistic content
- All datetime values must be in UTC timezone (ISO 8601 format with
Zsuffix)
Request Body
mediaIdstringrequiredThe ID of the uploaded video file. Obtain this from POST /media.
scheduledDatestringoptionalSchedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.
postsarrayrequiredArray of post objects. Include one object per Tumblr blog.
posts[].accountIdstringrequiredThe Tumblr blog ID. Retrieve from GET /social-accounts.
posts[].titlestringoptionalOptional post heading. Rendered above the video player.
posts[].captionstringoptionalPost body text below the video. Hashtags are extracted as Tumblr tags.
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/video" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"mediaId": "vid_12345",
"scheduledDate": "2025-06-01T14:00:00Z",
"posts": [
{
"accountId": "acc_tumblr_456",
"title": "Making a Zine from Scratch",
"caption": "Full process video — from blank paper to finished zine. Tools used: X-Acto knife, bone folder, saddle stitch binding. #zine #diy #bookbinding #printmaking"
}
]
}'/post/textText PostPublish a text post to a Tumblr blog. Tumblr text posts are the platform's original format — ideal for essays, poetry, short fiction, thoughts, and long-form creative writing.
Text Post Notes
titlerenders as a large styled heading — highly recommended for text posts- Tumblr text posts have no character limit — ideal for long-form writing
- Line breaks and spacing are preserved in the rendered post
- Hashtags at the end of the
captionare extracted as Tumblr tags - Text posts are highly rebloggable — a strong hook drives organic spread
- Tumblr's text post audience is particularly receptive to creative writing and personal essays
Request Body
scheduledDatestringoptionalSchedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.
postsarrayrequiredArray of post objects. Include one object per Tumblr blog.
posts[].accountIdstringrequiredThe Tumblr blog ID. Retrieve from GET /social-accounts.
posts[].titlestringoptionalPost heading. Rendered as a large styled title above the body. Highly recommended for text posts.
posts[].captionstringoptionalThe full post body. No character limit. Line breaks preserved. Hashtags extracted as tags.
Response
Code Example
curl -X POST "https://v1.api.crosspostify.com/post/text" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"scheduledDate": "2025-06-01T14:00:00Z",
"posts": [
{
"accountId": "acc_tumblr_456",
"title": "On the Quiet Hours",
"caption": "It\'s 2am and I\'m thinking about how the best creative work happens in the margins of the day. Not in the scheduled blocks or the productivity sprints — but in the in-between moments when your brain finally stops performing and starts actually thinking.\n\nAnyway. Here\'s a playlist.\n\n#writing #creativity #nightowl"
}
]
}'Tags & Discovery
Tumblr's discovery system is almost entirely tag-driven. Unlike most platforms where the algorithm surfaces content based on engagement signals, Tumblr users actively follow and browse specific tags. Getting your tags right is the single most important factor for reach on Tumblr.
How Tags Work
- Crosspostify extracts #hashtags from your caption
- Extracted tags are registered as Tumblr post tags
- Users who follow a tag see posts with that tag
- Tags also appear in Tumblr search results
- Up to 30 tags per post are indexed by Tumblr
- Only the first 20 tags appear in search results
Tag Strategy Tips
- Use niche tags — they have dedicated followers
- Mix broad tags (#photography) with specific ones (#filmphotography)
- Tumblr communities are tag-based — research your niche
- Tags with active followers outperform trending tags
- Place tags at the end of your caption for readability
- Avoid tag spam — quality over quantity
If you manage multiple Tumblr blogs, you can include multiple entries in the posts array — each with a different accountId — to publish the same content to multiple blogs simultaneously in a single API call.
Content Guidelines
Tumblr's audience is creative, niche-focused, and highly engaged within specific communities. Content that feels authentic and community-native performs far better than polished brand content.
Image Requirements
- Format: JPG, PNG, or GIF
- Max file size: 20MB per image
- Recommended width: 1280px
- Images display full-width — no feed cropping
- GIFs are natively supported and popular on Tumblr
- Photosets: up to 10 images per post
Video Requirements
- Format: MP4 recommended
- Max file size: 500MB
- Max duration: 5 minutes
- Videos autoplay in the dashboard feed
- No specific aspect ratio requirement
- Shorter videos (under 2 min) perform better
Text & Caption Tips
- No character limit on text posts
- title renders as a styled heading — use it
- Line breaks and spacing are preserved
- Tumblr audiences love long-form and personal writing
- Reblog culture rewards authentic, relatable content
- Avoid overly promotional or corporate tone
Scheduling
- Minimum lead time: ~10 minutes ahead
- All times must be UTC (ISO 8601 + Z)
- Omit scheduledDate to post immediately
- Best times: evenings and late nights (Tumblr skews night-owl)
- Consistent posting builds a follower base over time