Skip to main content
me returns the identity behind the token you are calling with. It is the first query to run after authenticating: it confirms your token works and tells you who and where you are.

Me is a union

me returns the Me union, which resolves to a different type depending on which token you send:
Both tokens come from the same exchange call (see Authentication); they represent the same person at two different scopes. Because me is a union, always select fields with an inline fragment (... on User / ... on WorkspaceUser) and read __typename to know which one you got.
Me
The authenticated identity, or null if the token is missing or invalid. Resolves to User for a userToken and WorkspaceUser for a workspaceToken.

With a userToken: User

Call with the account-wide userToken to get your user account and the workspaces you belong to.
ID!
Your user ID, stable across every workspace.
String!
Your display name.
String!
Your email address.
[WorkspaceShortDetails!]!
The workspaces you are a member of. Use a workspace id here to pick which workspace an integration should act on.
cURL

With a workspaceToken: WorkspaceUser

Call with the workspace-scoped workspaceToken to get your membership in that workspace, including your role.
ID!
The membership ID linking your user to this workspace.
WorkspaceRole!
Your role in the workspace: admin, l1, l2, or l3.
Date!
When you were added to the workspace.
UserShortDetails!
Your underlying user account: id, name, email.
Workspace!
The workspace this token is scoped to. It is the entry point to clients and tasks: me { ... on WorkspaceUser { workspace { clients { ... } } } }.
cURL
Query both members in one document so your client handles either token: me { __typename ... on User { ... } ... on WorkspaceUser { ... } }, then branch on __typename.