Setup guide
Connect X (Twitter)
The quickest to set up and the only one that costs money. There is no review queue — but the free tier cannot read analytics.
Check these first
Each of these blocks everything after it, and none of them is checked until the very last step — so it is worth thirty seconds now.
- A paid X API plan. The Free tier allows posting only, with no read access, so analytics return nothing. Check current pricing before committing — this is the one platform where the blocker is budget rather than time.
Steps
Create a project and an app
developer.x.com → Dashboard → create a Project, then an App inside it. An app outside a project will not work.
Turn on OAuth 2.0
App settings → User authentication settings → Set up. Choose OAuth 2.0, App type "Web App", and Confidential client.
Set the callback URL
Paste the URI SIGNAL gives you. A website URL is also required — use your own site.
Copy the credentials
Keys and tokens → OAuth 2.0 Client ID and Client Secret. Note these are NOT the API Key and API Secret, which are a different pair for a different auth method.
Developer console: developer.x.com/en/portal/dashboard
Permissions to request
Read-only. None of these let anything post on your behalf — if a console offers you publishing permissions, you can leave them off.
- tweet.read
- users.read
- offline.access
If something goes wrong
These are the real failures, with the errors the platform actually shows. Most of them point somewhere other than the actual cause.
- The connection works for an hour or two, then dies.
- `offline.access` was not granted, so X issued no refresh token and there is no way to renew. Reconnect with it enabled.
- 403 on every analytics call.
- The project is on the Free tier. Posting works, reading does not. Only a paid plan fixes it.
- Pasted the credentials and nothing authenticates.
- The API Key/Secret pair was used instead of the OAuth 2.0 Client ID/Secret pair. Both are on the same page and look similar.
Console layouts change. These steps were checked in July 2026 — if a screen does not match, the developer console’s own documentation is the authority.