All guides

Connecting X (Twitter) to Social Quack

One app of your own in X's console, a few dollars of credit, and your posts go out on schedule — with the keys encrypted on your own Mac.

X is the one platform in Social Quack that costs money to post through. Everything else about it is simple: you create a small developer app of your own, paste two keys into Social Quack, and approve the connection on X's own page. You do it once — X's kind of connection never expires, so there is nothing to reconnect every few weeks.

Because the app is yours, the keys stay encrypted on your own computer and the posting allowance is yours alone. You are not sharing a pool with anyone else's accounts, so nobody else's activity can get you throttled.

1. What it costs

X has no free posting tier any more. The old Free (Standard Basic) access is deprecated — an app that still sits there is refused every time it tries to post. To post through X's API you need a developer account on the Pay Per Use plan with some credit loaded. A post costs cents.

Loading $5–10 is plenty to start with. This applies to X only; Bluesky, Mastodon and the other platforms in Social Quack are free.

2. Open the X card in Social Quack first

Start in the app, so the value you have to copy is already on screen:

Channels in the sidebar → the X (Twitter) card → Set up app keys.

(Once a workspace has keys saved, that button reads Edit app keys — it opens the same panel.)

That panel has the two boxes you will fill in at the end and, above them, the redirect URL that X calls the Callback URI, with a copy button next to it. It includes the port this copy of Social Quack is running on, so take it from the copy button rather than typing it out — X rejects it if a single character is off. Leave that window open.

3. Create a Pay Per Use project and load credit

  1. Go to https://console.x.com and open Projects. You need a project on the Pay Per Use plan. If all you have is an old Free (Standard Basic) project, it no longer works — use the Pay Per Use one, or create one.
  2. Billing → Credits: load $5–10.

4. Create the app

Inside the Pay Per Use project: Apps → Create App.

Already have an app sitting in an old project? You can move it instead, through Project Access → Manage.

5. Set the permissions and the callback URL

Open the app → Settings, in the Authentication settings section:

Setting What to put
Permissions Read and write
Type of App Web App
Callback URI the redirect URL Social Quack shows on the Set up app keys screen — use its copy button and paste it exactly
Website any URL

Save. Do this before the next step: keys created before a permissions change keep the old level, and the connection then fails after you approve at X.

6. Copy the API Key and Secret

App → Keys & Tokens → OAuth 1.0 Keys → Regenerate the Consumer Key, then copy the two values it shows you:

  • API Key (Consumer Key)
  • API Key Secret (Consumer Secret)

The secret is displayed once. If you close the page without copying it, just regenerate again — and regenerate any time you change the app's permissions.

Regenerating replaces the old pair everywhere: X signs every one of your posts with these keys, so once you regenerate, the old ones are dead. If you have pasted them into more than one workspace, open each of those workspaces' Set up app keys panel and paste the new pair there too — saving opens X's authorisation page again, and approving reconnects that account over the top, keeping everything it has queued. A workspace left on the old keys stops being able to post.

7. Paste them in and connect

Back in Social Quack, on that same Set up app keys panel: paste them into API Key (Consumer Key) and API Key Secret (Consumer Secret) and click Save. There is nothing else to press — saving the keys opens X's authorisation page in your browser straight away. Approve it for the account you want to post from. The browser then lands on a Connected! page telling you to close the tab and go back to Social Quack. Do that: the account is already waiting on the Channels page.

Once the keys are saved, the Connect button on the X card starts that same authorisation on its own — that is the one to use another day, to add a second account or to reconnect one.

You can connect several accounts through the same app: one per workspace, if you keep separate brands. Each workspace keeps its own copy of the keys, so switch workspace in the sidebar and paste the same two values into that workspace's Set up app keys panel — saving there opens the authorisation page for that workspace too. One app in X covers them all.

8. What you can post to X

Post length 280 characters
Threads Yes — each part goes out as a reply to the one before it
Images Up to 4, on the first post of a thread, with alt text
Video Yes

Photos that are larger than X accepts, or in a format it does not take, are resized and converted for you before they go out — you do not have to prepare anything.

If something goes wrong

You see What it means Do this
The post fails with a 403 and client-not-enrolled The app is not in a Pay Per Use project — the old free access no longer works Create the app inside the Pay Per Use project, or move it there with Project Access → Manage
X token exchange failed, on a Connection failed page after you approve at X Usually the keys were made before you changed the app's permissions, so they still carry the old level. It can also be keys from a different app, or a secret that got cut short when you copied it Keys & Tokens → OAuth 1.0 Keys → Regenerate, copy both values again, paste the new pair into Set up app keys and click Save — the authorisation page opens again
X users/me failed, on that same Connection failed page The app is not attached to a project with API access Check the app really sits inside your Pay Per Use project
X API Key / Secret not configured That workspace has no keys saved — each workspace keeps its own copy Switch to that workspace in the sidebar, then Channels → X → Set up app keys, paste both and click Save
Posts to one X account start failing (X rejected the post, 401) after you regenerated the keys The new pair only went into the workspace you were in; the other workspaces still hold the old, now-dead keys In each of the others: Set up app keys, paste the new pair, Save, approve at X again. The account reconnects over the top and its queued posts are kept — never remove the channel, that would delete its posts
X's authorisation page shows an error, Social Quack shows an error instead of opening it, or you land on a page headed Connection failed Usually the Callback URI in X does not match the one Social Quack shows Copy the redirect URL from the Set up app keys panel again, paste it into App → Settings → Callback URI, save, then click Connect on the X card in Social Quack
The browser stops on a Connected! page and does not take you back Nothing is wrong — Social Quack opens X in your normal browser, and a browser cannot jump back into the app Close the tab and switch back to Social Quack; the account is already on the Channels page
Posts start failing after a while, with nothing changed at your end Your credit has run out — every post costs cents Billing → Credits, top up
The post fails with a 429, or a 500-ish error X is rate-limiting you or having a bad moment Nothing — Social Quack treats these as temporary and tries the post again by itself
You lost the API Key Secret It is only ever shown once Regenerate the Consumer Key, paste the new pair into Set up app keys and click Save — in every workspace that uses X, because the old pair stops working everywhere

Still stuck? [email protected].

Stuck on a step? Email [email protected] and a human will answer.