Postpone Logo
Scheduling Posts

Tumblr

Schedule posts to Tumblr blogs

Mutation

Use the scheduleTumblrPost mutation to schedule content to Tumblr blogs:

Mutation
mutation ScheduleTumblrPost($input: ScheduleTumblrPostInput!) {
  scheduleTumblrPost(input: $input) {
    success
    errors {
      field
      message
    }
    post {
      id
      socialAccount {
        id
        username
      }
      publishingStatus
      content
      layout
      tags
      communityLabel
      sourceUrl
      gallery {
        id
        galleryMediaSet {
          id
          media {
            url
            mimeType
          }
        }
      }
      submissions {
        id
        postAt
      }
    }
  }
}

Input Parameters

ScheduleTumblrPostInput

username
String! required
The username of the connected Tumblr blog to post from
content
JSONString! required
The post content in Tumblr's NPF (Neue Post Format) structure
layout
JSONString! required
The post layout configuration in NPF format
tags
[String!]
Array of tags for the post (max 30 tags)
sourceUrl
String
Source URL to attribute the content to (optional)
communityLabel
TumblrCommunityLabelType! required
Community labeling for content. Options: FOR_EVERYONE, MATURE, DRUGS, VIOLENCE, SEXUAL_THEMES
submissions
[TumblrPostSubmissionInputType!]! required
Array of submissions defining when to post (minimum 1 submission)
publishingStatus
PublishingStatusType
Publishing status. Options: READY_TO_PUBLISH, DRAFT (default: READY_TO_PUBLISH)
postTags
[ID!]
Array of post tag IDs to organize your content
id
ID
ID of existing post when updating (only for updates)

TumblrPostSubmissionInputType

Each submission defines a specific posting schedule:

postAt
DateTime! required
When to publish the post (must be in the future)
id
ID
ID of existing submission when updating (only for updates)

NPF Content Structure

Tumblr uses the Neue Post Format (NPF) for structured content. Here are common content block types:

Text Block

{
  "type": "text",
  "text": "Your text content here",
  "subtype": "heading1" // optional: heading1, heading2, quirky, quote, indented, chat, ordered-list-item, unordered-list-item
}

Image Block

{
  "type": "image",
  "media": [
    {
      "url": "https://example.com/image.jpg",
      "type": "image/jpeg",
      "width": 1080,
      "height": 1080
    }
  ]
}
{
  "type": "link",
  "url": "https://example.com",
  "title": "Link Title",
  "description": "Link description",
  "author": "Author Name",
  "site_name": "Site Name"
}

Examples

Simple Text Post

Schedule a basic text post to Tumblr.

{
  "input": {
    "username": "myblog",
    "content": [
      {
        "type": "text",
        "text": "Just discovered this amazing new coffee shop downtown! ☕ The atmosphere is perfect for getting work done, and their latte art is incredible. Definitely my new favorite spot for morning meetings."
      }
    ],
    "layout": [],
    "tags": ["coffee", "downtown", "productivity", "latte art", "new favorite"],
    "communityLabel": "FOR_EVERYONE",
    "submissions": [
      {
        "postAt": "2025-12-01T10:00:00Z"
      }
    ]
  }
}

Image Post with Caption

Schedule an image post with descriptive text.

{
  "input": {
    "username": "myblog",
    "content": [
      {
        "type": "image",
        "media": [
          {
            "url": "https://example.com/sunset-photo.jpg",
            "type": "image/jpeg",
            "width": 1080,
            "height": 1350
          }
        ]
      },
      {
        "type": "text",
        "text": "Golden hour magic from last night's walk along the beach. There's something so peaceful about watching the sun disappear into the horizon. 🌅✨"
      }
    ],
    "layout": [
      {
        "type": "rows",
        "display": [
          {"blocks": [0]},
          {"blocks": [1]}
        ]
      }
    ],
    "tags": ["photography", "sunset", "beach", "golden hour", "peaceful", "nature"],
    "communityLabel": "FOR_EVERYONE",
    "submissions": [
      {
        "postAt": "2025-12-01T18:30:00Z"
      }
    ]
  }
}

Quote Post

Schedule a quote post with attribution.

{
  "input": {
    "username": "myblog",
    "content": [
      {
        "type": "text",
        "subtype": "quote",
        "text": "The future belongs to those who believe in the beauty of their dreams."
      },
      {
        "type": "text",
        "text": "— Eleanor Roosevelt"
      }
    ],
    "layout": [
      {
        "type": "rows",
        "display": [
          {"blocks": [0]},
          {"blocks": [1]}
        ]
      }
    ],
    "tags": ["quotes", "inspiration", "Eleanor Roosevelt", "dreams", "motivation"],
    "communityLabel": "NONE",
    "submissions": [
      {
        "postAt": "2025-12-01T14:00:00Z"
      }
    ]
  }
}

Link Post with Commentary

Schedule a link post with your thoughts and commentary.

{
  "input": {
    "username": "myblog",
    "content": [
      {
        "type": "text",
        "text": "Fascinating article about the future of sustainable technology! The innovations in solar panel efficiency are particularly exciting. We're definitely moving in the right direction for a greener future. 🌱"
      },
      {
        "type": "link",
        "url": "https://example.com/sustainable-tech-article",
        "title": "Revolutionary Advances in Sustainable Technology",
        "description": "Exploring the latest breakthroughs in renewable energy and eco-friendly innovations that are shaping our future.",
        "author": "Dr. Jane Smith",
        "site_name": "Green Tech Today"
      }
    ],
    "layout": [
      {
        "type": "rows",
        "display": [
          {"blocks": [0]},
          {"blocks": [1]}
        ]
      }
    ],
    "tags": ["sustainability", "technology", "renewable energy", "green tech", "innovation", "environment"],
    "sourceUrl": "https://example.com/sustainable-tech-article",
    "communityLabel": "NONE",
    "submissions": [
      {
        "postAt": "2025-12-01T16:15:00Z"
      }
    ]
  }
}

Mature Content Post

Schedule a post with mature content labeling.

{
  "input": {
    "username": "myblog",
    "content": [
      {
        "type": "text",
        "text": "Exploring themes of identity and self-expression through art. This piece represents the journey of finding yourself in a world that constantly tries to define you."
      },
      {
        "type": "image",
        "media": [
          {
            "url": "https://example.com/artistic-expression.jpg",
            "type": "image/jpeg",
            "width": 800,
            "height": 1200
          }
        ]
      }
    ],
    "layout": [
      {
        "type": "rows",
        "display": [
          {"blocks": [0]},
          {"blocks": [1]}
        ]
      }
    ],
    "tags": ["art", "identity", "self expression", "personal journey", "creative"],
    "communityLabel": "MATURE",
    "submissions": [
      {
        "postAt": "2025-12-01T20:00:00Z"
      }
    ]
  }
}

Response Types

Success Response

{
  "data": {
    "scheduleTumblrPost": {
      "success": true,
      "errors": [],
      "post": {
        "id": "123",
        "socialAccount": {
          "id": "456",
          "username": "myblog"
        },
        "publishingStatus": "READY_TO_PUBLISH",
        "content": [
          {
            "type": "text",
            "text": "Just discovered this amazing new coffee shop downtown! ☕ The atmosphere is perfect for getting work done, and their latte art is incredible. Definitely my new favorite spot for morning meetings."
          }
        ],
        "layout": [],
        "tags": ["coffee", "downtown", "productivity", "latte art", "new favorite"],
        "communityLabel": "NONE",
        "sourceUrl": null,
        "gallery": null,
        "submissions": [
          {
            "id": "789",
            "postAt": "2025-12-01T10:00:00Z"
          }
        ]
      }
    }
  }
}

Error Response

{
  "data": {
    "scheduleTumblrPost": {
      "success": false,
      "errors": [
        {
          "field": "content",
          "message": "Tumblr post content cannot be empty."
        }
      ],
      "post": null
    }
  }
}

Validation Rules

The API enforces Tumblr's content policies and NPF requirements:
  • Content Format: Must use valid NPF (Neue Post Format) structure
  • Tags: Maximum 30 tags per post, each tag max 139 characters
  • Text Length: No hard limit, but very long posts may be truncated in feeds
  • Image Requirements: JPEG, PNG, GIF, WebP formats supported
  • Image Size: Maximum 10MB per image
  • Video Support: MP4 format, maximum 100MB
  • Community Labels: Must be correctly applied for mature content
  • NPF Validation: Content and layout must follow NPF specifications
  • Scheduling: Posts must be scheduled for future dates only
  • Account Limits: Respects your plan's monthly post limits

Common Errors