Skip to main content
On a self-hosted PostQueen the Tumblr app is yours. You register it on Tumblr, add PostQueen’s address as its OAuth2 redirect URL, and give PostQueen the app’s consumer key and secret. Tumblr does not review apps.

Before you start

Tumblr has no scope settings on the app. PostQueen asks for the two scopes when a channel connects, and refuses the connect if Tumblr grants fewer. offline_access is what gives PostQueen a refresh token, so the channel keeps working after the first token expires.

Create the app

1

Register the application

Go to tumblr.com/oauth/apps and choose Register application. Fill in the name, website, description and contact email. The callback fields are the ones that matter.
2

Add the OAuth2 redirect URL

PostQueen signs in with OAuth 2, and Tumblr turns OAuth 2 on for an app only once it has a valid OAuth2 redirect URL. Enter the address that matches how you run PostQueen in the OAuth2 redirect URL field:
The form also asks for a default callback URL, which is an OAuth 1 setting. The same address works there.The redirect URI is where the network sends the browser back after someone approves PostQueen. It is your FRONTEND_URL + /integrations/social/ + the network’s identifier, for example https://postqueen.example.com/integrations/social/pinterest.Most networks need exactly one URI, with no trailing slash. Two exceptions: TikTok Business needs the trailing slash (/integrations/social/tiktok-business/), and a Google web client that also serves Google Business Profile lists both /integrations/social/youtube and /integrations/social/gmb. Channel developer apps lists every network’s ending.
3

Copy the consumer key and secret

The app now shows its OAuth consumer key and its secret key. The consumer key is the OAuth 2 client ID, and the secret key is the client secret. Copy both, and keep the secret private.

Set the variables

Add the two keys to your environment:
Recreate the app container so it reads the new variables. A plain docker restart or docker compose restart keeps the old container and its old environment. In the folder that holds docker-compose.yaml, recreate only the postqueen service:
The database, Redis and Temporal keep running. Avoid docker compose down for a settings change: on a host that runs other Compose services in the same project, it stops them too. Then open PostQueen, go to Channels, choose Add Channel and pick this network. You are sent to its login to authorize PostQueen, and the channel appears in the Channels list once you accept.
The channel is in the Channels list with its avatar and name.
Add Channel does not check whether your variables are set. A missing or misspelled key shows up as a broken authorization page on the network’s side rather than a helpful message in PostQueen, so if the login page itself looks wrong, check the keys before anything else.
Pick Tumblr, sign in and approve access. Tumblr then lists the blogs on your account, with the primary one marked. Pick the blog this channel posts to. One channel is one blog, so connect again to add another.

Rate limits

  • Your app. 1,000 requests an hour and 5,000 a day for each consumer key, shared by every Tumblr channel on your install.
  • Each Tumblr account. 250 posts, 250 image uploads, 20 video uploads and 60 minutes of video a day. When one is reached, the post fails with a message that names it, such as “Tumblr daily posting limit reached.”
See Tumblr’s API docs for the current figures.

Troubleshooting

Tumblr returned a token without both scopes. Connect again and approve access on Tumblr’s screen.
The OAuth2 redirect URL is missing from the app, or is not exactly your FRONTEND_URL followed by /integrations/social/tumblr. Edit the app and fix it.
Tumblr refused the stored token and the refresh failed. Choose Reconnect channel in the channel’s menu and approve access again.
Last modified on September 23, 2026