API referenceOAuthGet the signed-in user

Get the signed-in user

⚠️
Preview — this feature is being built; the design below is the spec.
GET https://app.syntic.ai/v1/oauth/userinfo

Return who an access token belongs to. Apps call it right after sign-in to show the person’s name and pick the right local account. Needs the user:profile scope.

For how this fits into a full workflow, see Build a Sign in with Syntic app.

Headers

HeaderRequiredValue
AuthorizationYesBearer <access token>: an OAuth access token from Sign in with Syntic. API keys are refused with 401 invalid_token.
syntic-betaYes, while in previewoauth-apps-2026-12-01. Without it the call fails with 400 beta_required. See Versioning.

Response

200 OK, Content-Type: application/json

{
  "sub": "user_01J9Y0A2C4E6G8J0L2N4",
  "email": "dana@example.com",
  "email_verified": true,
  "name": "Dana Lee",
  "organization": {
    "id": "org_01J9X8Z6B4D2F0H8K6M4",
    "name": "Acme",
    "plan": "Business"
  },
  "scopes": [
    "user:profile",
    "user:inference"
  ]
}
FieldTypeDescription
substringStable member id. Use it, not the email, as your account key.
organization.planstringThe real platform plan name of the organization the person signed in to.
scopesarrayScopes the token carries.

Examples

curl -sS "https://app.syntic.ai/v1/oauth/userinfo" \
  -H "Authorization: Bearer $SYNTIC_ACCESS_TOKEN" \
  -H "syntic-beta: oauth-apps-2026-12-01"

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
401authentication_errorinvalid_tokenThe access token is missing, expired or revoked, or an API key was sent.
403permission_errorinsufficient_scopeThe token lacks user:profile.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.

Send the OAuth access token as the bearer credential, not an API key. API keys are refused with 401 invalid_token.

Was this page helpful?