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
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.
User.id
ID!
Your user ID, stable across every workspace.
User.name
String!
Your display name.
User.email
String!
Your email address.
User.workspaces
[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.
WorkspaceUser.id
ID!
The membership ID linking your user to this workspace.
WorkspaceUser.role
WorkspaceRole!
Your role in the workspace: admin, l1, l2, or l3.
WorkspaceUser.createdAt
Date!
When you were added to the workspace.
WorkspaceUser.user
UserShortDetails!
Your underlying user account: id, name, email.
WorkspaceUser.workspace
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.