Skip to content
Fresh 2026

Quick Reference

API base

ItemValue
Graph API hosthttps://graph.facebook.com
Versioned pathhttps://graph.facebook.com/{version}/{path}
Current version linev25.0 era (always confirm in the changelog)
Authaccess_token query param or Authorization: Bearer {token}
Marketing API account prefixact_{ad_account_id}

Token types

TokenLifetimeUse
User Access Token (short)~1 hourInitial login exchange
User Access Token (long)~60 daysServer-side user calls
Page Access TokenMatches user token / never (if from long-lived)Act as a Page
App Access TokenUntil secret rotatesApp-level, server-only
Client TokenStaticMobile/JS SDK init only

Common error codes

CodeMeaningRecovery
190Invalid / expired access tokenRe-authenticate the user
102Session/API session errorRe-authenticate
4Application request limit reachedBack off, retry later
17User request limit reachedBack off per-user
32Page request limit reachedBack off per-page
613Custom rate limit (Marketing API)Exponential backoff
200 / 10 / 803Permission / unsupported requestRe-request the missing scope
1 / 2Unknown / temporary errorRetry with backoff

Every error returns code, optional error_subcode, message, and fbtrace_id. Always log fbtrace_id.

Useful endpoints

ActionEndpoint
Current userGET /me?fields=id,name
Debug a tokenGET /debug_token?input_token={t}&access_token={app_token}
Exchange long-livedGET /oauth/access_token?grant_type=fb_exchange_token&...
Batch requestPOST / with batch=[...] (up to 50 calls)
Page feedGET /{page-id}/feed
Publish IG mediaPOST /{ig-user-id}/media then /media_publish
Ad account campaignsGET /act_{id}/campaigns

Rate limiting notes

  • Graph API uses per-app, per-user, and per-page limits; Marketing API and Business Use Case (BUC) limits are separate.
  • Watch the X-App-Usage, X-Page-Usage, and X-Business-Use-Case-Usage response headers, back off as they approach 100%.
  • Prefer batch requests and field expansion to reduce call volume.

Request patterns

bash
# Basic read with field expansion
curl -s "https://graph.facebook.com/v25.0/me?fields=id,name,email&access_token=$TOKEN"

# Debug a token
curl -s "https://graph.facebook.com/v25.0/debug_token?input_token=$USER_TOKEN&access_token=$APP_TOKEN"

# Batch request (up to 50 sub-requests)
curl -s -X POST "https://graph.facebook.com/v25.0" \
  -F "access_token=$TOKEN" \
  -F 'batch=[{"method":"GET","relative_url":"me"},{"method":"GET","relative_url":"me/accounts"}]'

See Graph API → Handle Errors and Versioning for the authoritative detail.