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.

Post Types
Image · Multi-image · Video · Text
Title
Supported (optional)
Tags
Inline in caption (#tag)
Audience
Creative & niche communities

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.
Tags are extracted from your caption

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/post/imagePhoto Post

Publish 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
  • title renders as a heading above the image — useful for named series (e.g. "Daily Sketch #42")
  • Hashtags in caption are extracted as Tumblr tags for tag-based discovery
  • Upload your image first via POST /media and use the returned mediaId
  • All datetime values must be in UTC timezone (ISO 8601 format with Z suffix)
  • Omit scheduledDate to post immediately

Request Body

mediaIdstringrequired

The ID of the uploaded image file. Obtain this from POST /media.

scheduledDatestringoptional

Schedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.

postsarrayrequired

Array of post objects. Include one object per Tumblr blog.

posts[].accountIdstringrequired

The Tumblr blog ID. Retrieve from GET /social-accounts.

posts[].titlestringoptional

Optional post heading. Rendered above the image on the blog. Great for series titles.

posts[].captionstringoptional

Post body text. Hashtags are extracted as Tumblr tags. Supports line breaks.

Response

{ "success": true, "data": { "postId": "post_tmblr_001", "status": "SCHEDULED", "scheduledDate": "2025-06-01T14:00:00Z", "accounts": [ { "accountId": "acc_tumblr_456", "platform": "tumblr", "status": "SCHEDULED" } ] } }

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/post/imagesPhotoset

Publish 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 caption appears below the entire photoset
  • All datetime values must be in UTC timezone (ISO 8601 format with Z suffix)

Request Body

mediaIdsarrayrequired

Ordered array of image media IDs. Images appear in this order in the photoset.

scheduledDatestringoptional

Schedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.

postsarrayrequired

Array of post objects. Include one object per Tumblr blog.

posts[].accountIdstringrequired

The Tumblr blog ID. Retrieve from GET /social-accounts.

posts[].titlestringoptional

Optional post heading. Rendered above the photoset. Great for naming a series or trip.

posts[].captionstringoptional

Shared caption for the entire photoset. Hashtags are extracted as Tumblr tags.

Response

{ "success": true, "data": { "postId": "post_tmblr_002", "status": "SCHEDULED", "scheduledDate": "2025-06-01T14:00:00Z", "mediaCount": 4, "accounts": [ { "accountId": "acc_tumblr_456", "platform": "tumblr", "status": "SCHEDULED" } ] } }

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/post/videoVideo Post

Publish 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 /media and use the returned mediaId
  • title renders 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 Z suffix)

Request Body

mediaIdstringrequired

The ID of the uploaded video file. Obtain this from POST /media.

scheduledDatestringoptional

Schedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.

postsarrayrequired

Array of post objects. Include one object per Tumblr blog.

posts[].accountIdstringrequired

The Tumblr blog ID. Retrieve from GET /social-accounts.

posts[].titlestringoptional

Optional post heading. Rendered above the video player.

posts[].captionstringoptional

Post body text below the video. Hashtags are extracted as Tumblr tags.

Response

{ "success": true, "data": { "postId": "post_tmblr_003", "status": "PROCESSING", "scheduledDate": "2025-06-01T14:00:00Z", "videoDuration": 187, "accounts": [ { "accountId": "acc_tumblr_456", "platform": "tumblr", "status": "PROCESSING" } ] } }

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/post/textText Post

Publish 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

  • title renders 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 caption are 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

scheduledDatestringoptional

Schedule the post for a future time (ISO 8601 with 'Z' suffix). Omit to post immediately.

postsarrayrequired

Array of post objects. Include one object per Tumblr blog.

posts[].accountIdstringrequired

The Tumblr blog ID. Retrieve from GET /social-accounts.

posts[].titlestringoptional

Post heading. Rendered as a large styled title above the body. Highly recommended for text posts.

posts[].captionstringoptional

The full post body. No character limit. Line breaks preserved. Hashtags extracted as tags.

Response

{ "success": true, "data": { "postId": "post_tmblr_004", "status": "SCHEDULED", "scheduledDate": "2025-06-01T14:00:00Z", "accounts": [ { "accountId": "acc_tumblr_456", "platform": "tumblr", "status": "SCHEDULED" } ] } }

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
Post to multiple blogs in one call

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