{"registry_version":"2026.1025.387","generated_at":"2026-10-25T06:27:00Z","content_sha256":"089d16f627d9365e3d0663cc8069203706d7cb23a76c332226e29686968811a5","signed":true,"signature":{"key_id":"ed25519:74ca19268e364242","algorithm":"ed25519","expires_at":"2026-11-24T06:27:09Z","expired":false,"manifest":"/registry/manifest.json"},"id":"x/developer-api","name":"X API (developer console, app and keys)","vendor":"X Corp","status":"researched","last_verified":null,"last_researched":"2026-10-25","summary":"Sign in to the X Developer Console with an X account, accept the Developer Agreement and Policy, describe your use case, create an app, buy prepaid pay-per-use credits, and copy the app's keys and tokens (shown once).","account_model":{"summary":"Everything hangs off an ordinary X user account. The developer account is created by signing that account in to the Developer Console; apps live under it and each app has its own keys. Credits and billing sit on the developer account.","accounts":[{"name":"X user account","kind":"personal","owned_by":"the person (or a company-controlled X account)","required":true,"note":"The account that signs in to console.x.com and owns the apps. A verified phone number is required to subscribe to paid services."},{"name":"X developer account","kind":"developer","parent":"X user account","required":true,"note":"Created by accepting the Developer Agreement and Policy and completing the profile in the Developer Console."},{"name":"App","kind":"project","parent":"X developer account","required":true,"note":"Holds the API key/secret, bearer token, access token/secret and OAuth 2.0 client id/secret. Policy allows separate apps only for dev, staging and production of the same service (up to 3)."}],"notes":["Credits are prepaid and deducted per request; a negative balance blocks API requests."]},"prerequisites":[{"need":"An X account you control, with a verified phone number","note":"The Developer Agreement requires a verified phone number to subscribe to paid services."}],"identity_requires":[],"have_ready":[{"kind":"phone_for_2fa","description":"A phone number verified on the X account","why":"X requires a verified phone number to subscribe to a paid service.","needed_for":["buy-credits"],"auto_check":"none","source_url":"https://docs.x.com/developer-terms/agreement"},{"kind":"payment_card","description":"A payment card for prepaid X API credits","why":"Access is pay-per-use with prepaid credits; the $20 starter credit needs a saved card and a first purchase.","needed_for":["buy-credits"],"auto_check":"none","source_url":"https://docs.x.com/x-api/getting-started/pricing"},{"kind":"other","description":"A short, honest description of how you will use the API","why":"The console profile asks for basic information about how you'll use the API, and each app asks for a use case.","needed_for":["developer-profile","create-app"],"auto_check":"none","source_url":"https://docs.x.com/x-api/getting-started/getting-access"},{"kind":"other","description":"Your OAuth callback URL(s), using HTTPS in production and http://127.0.0.1 (not localhost) for local work","why":"Callback URLs must match the app's allowlist exactly (max 10 per app).","needed_for":["user-auth-settings"],"auto_check":"none","source_url":"https://docs.x.com/fundamentals/developer-apps"}],"steps":[{"id":"sign-in","title":"Sign in to the X Developer Console","summary":"Sign in at console.x.com with the X account that will own the apps. You sign in yourself; verapli never handles your X password.","route":"guided","gate":"human_login","human_only":true,"gate_label":"You sign in","depends_on":[],"optional":false,"url":"https://console.x.com/","lead_time":null,"preflight":[],"captures":null},{"id":"developer-profile","title":"Accept the Developer Agreement and complete your profile","summary":"Read and accept the Developer Agreement and Policy, then fill in basic information about how you'll use the API. Describe the real use case; the policy forbids extra apps for the same use case.","route":"guided","gate":"human_terms","human_only":true,"gate_label":"You accept the terms","depends_on":["sign-in"],"optional":false,"url":"https://console.x.com/","lead_time":null,"preflight":[],"captures":null},{"id":"create-app","title":"Create an app","summary":"Click New App and enter a name, description and use case. The console then generates the app's keys and tokens.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["developer-profile"],"optional":false,"url":"https://console.x.com/","lead_time":null,"preflight":[],"captures":null},{"id":"buy-credits","title":"Add a card, buy credits and set a spending limit","summary":"Save a payment method and buy prepaid credits on X's billing page (you enter card details yourself). Set a maximum spend per billing cycle, and optionally auto-recharge with a threshold.","route":"guided","gate":"human_payment","human_only":true,"gate_label":"You add payment details","depends_on":["create-app"],"optional":false,"url":"https://console.x.com/","lead_time":null,"preflight":[],"captures":null},{"id":"user-auth-settings","title":"Set app permissions and user authentication","summary":"Choose the permission level (Read; Read and write; Read, write and DMs), pick the OAuth 2.0 app type (Web App, Automated App/Bot, Native App, Single Page App) and add the exact callback URLs.","route":"guided","gate":"human_submit","human_only":true,"gate_label":"You press submit","depends_on":["create-app"],"optional":true,"url":"https://console.x.com/","lead_time":null,"preflight":[],"captures":null},{"id":"copy-keys","title":"Copy the keys and tokens into your env file","summary":"Copy the API key and secret, bearer token, and (if needed) access token/secret and OAuth 2.0 client id/secret. verapli captures them by selector and writes them only to your own files.","route":"guided","gate":"none","human_only":false,"gate_label":null,"depends_on":["create-app"],"optional":false,"url":null,"lead_time":null,"preflight":[],"captures":"X_BEARER_TOKEN"}],"gates":[{"step":"sign-in","gate":"human_login","label":"You sign in"},{"step":"developer-profile","gate":"human_terms","label":"You accept the terms"},{"step":"create-app","gate":"human_submit","label":"You press submit"},{"step":"buy-credits","gate":"human_payment","label":"You add payment details"},{"step":"user-auth-settings","gate":"human_submit","label":"You press submit"}],"lead_times":[],"outputs":[{"name":"X_API_KEY","description":"App API key (consumer key), identifies the app and signs OAuth 1.0a requests","secret":true,"example_format":null,"environments":null},{"name":"X_API_SECRET","description":"App API key secret","secret":true,"example_format":null,"environments":null},{"name":"X_BEARER_TOKEN","description":"App-only bearer token for reading public data","secret":true,"example_format":null,"environments":null},{"name":"X_ACCESS_TOKEN","description":"Access token acting as the account that owns the app (OAuth 1.0a)","secret":true,"example_format":null,"environments":null},{"name":"X_ACCESS_TOKEN_SECRET","description":"Access token secret (OAuth 1.0a)","secret":true,"example_format":null,"environments":null},{"name":"X_CLIENT_ID","description":"OAuth 2.0 client id for user-context requests","secret":false,"example_format":null,"environments":null},{"name":"X_CLIENT_SECRET","description":"OAuth 2.0 client secret (confidential clients only; public clients use PKCE)","secret":true,"example_format":null,"environments":null}],"renewals":[],"estimated_minutes":null,"guide_url":"https://verapli.com/guides/x/developer-api"}