> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dueflow.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve the caller

> > **Requires scope** `organization:read` · **Minimum role** viewer

Who is calling and what they can do: the user (null for a service token), the token's kind and expiry, the organization the token is bound to, the role, the effective scopes for this request, which products are on for the organization, and the user's other organizations for a switcher. A client's first call after sign-in. Requires only `organization:read`, which every role holds.

[Scopes and roles](https://docs.dueflow.co/api-reference/scopes)



## OpenAPI

````yaml /openapi.json get /v1/me
openapi: 3.1.0
info:
  title: Dueflow API
  version: 1.0.0
  description: >-
    Read and write your organization's Dueflow data. Authenticate with a
    personal access token or an organization service token as a bearer
    credential; cookies are ignored. Every endpoint is also a tool on the
    Dueflow MCP server at https://api.dueflow.co/mcp, which accepts the same
    bearer tokens or an OAuth connection from ChatGPT and Claude.


    Timestamps in responses are RFC 3339, UTC, millisecond precision
    (`2026-01-31T17:04:05.123Z`). Timestamps you send are RFC 3339: send UTC
    (`Z`); some filters, such as `updatedSince`, also accept an offset.


    Responses may gain fields at any time; ignore the ones you don't know. Every
    failure answers with the `Error` envelope; branch on its `code`.
  termsOfService: https://dueflow.co/terms
  contact:
    name: Dueflow support
    email: hello@dueflow.co
    url: https://docs.dueflow.co
servers:
  - url: https://api.dueflow.co
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/me:
    get:
      tags:
        - Organization
      summary: Retrieve the caller
      description: >-
        > **Requires scope** `organization:read` · **Minimum role** viewer


        Who is calling and what they can do: the user (null for a service
        token), the token's kind and expiry, the organization the token is bound
        to, the role, the effective scopes for this request, which products are
        on for the organization, and the user's other organizations for a
        switcher. A client's first call after sign-in. Requires only
        `organization:read`, which every role holds.


        [Scopes and roles](https://docs.dueflow.co/api-reference/scopes)
      operationId: getMe
      responses:
        '200':
          description: Success
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Me'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/UnexpectedError'
      security:
        - bearerAuth:
            - organization:read
components:
  headers:
    X-Request-Id:
      description: >-
        Identifies the request; quote it to support. Also in the error body as
        `requestId`.
      schema:
        type: string
    RateLimit-Limit:
      description: Requests the token's budget for this kind of request allows per window.
      schema:
        type: integer
    RateLimit-Remaining:
      description: Requests left in the current window.
      schema:
        type: integer
    RateLimit-Reset:
      description: Seconds until the window resets.
      schema:
        type: integer
    Retry-After:
      description: Seconds to wait before retrying.
      schema:
        type: integer
  schemas:
    Me:
      type: object
      properties:
        user:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
            name:
              type: string
            email:
              format: email
              type:
                - string
                - 'null'
              description: >-
                The account email; null through an app you authorized (OAuth),
                which sees only the organization you chose
          required:
            - id
            - name
            - email
          description: >-
            The person the credential belongs to; null for a service token,
            which belongs to the organization
        token:
          type:
            - object
            - 'null'
          properties:
            kind:
              description: >-
                oauth is the access token a connected app received through an
                OAuth grant: it is refreshed in place and expires within hours
              type: string
              enum:
                - personal
                - service
                - oauth
            expiresAt:
              type: string
              format: date-time
              description: >-
                Timestamp: RFC 3339, UTC, millisecond precision
                (`2026-01-31T17:04:05.123Z`).
          required:
            - kind
            - expiresAt
          description: The API token the request authenticated with; null outside the API
        organization:
          description: The one organization the credential is bound to
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            type:
              type: string
              enum:
                - chapter
                - national
            parentId:
              type:
                - string
                - 'null'
            slug:
              type:
                - string
                - 'null'
            logoUrl:
              type:
                - string
                - 'null'
          required:
            - id
            - name
            - type
            - parentId
            - slug
            - logoUrl
        role:
          description: >-
            The role's preset key: admin, editor, viewer, secretary,
            chapter_consultant, store_manager, fundraiser or custom
          type: string
        roleName:
          description: >-
            The role's display name: the member's custom title when they have
            one
          type: string
        scopes:
          description: >-
            The effective scopes for this request (the token's grant, narrowed
            by the role and the organization's API policy), sorted
          type: array
          items:
            type: string
        features:
          description: >-
            Which products are enabled for the organization: false means the
            product isn't enabled here, so hide its screens. A product also
            reads false when the organization can't have it (collections is
            chapter-only) or this credential's scopes reach none of its
            endpoints
          type: object
          properties:
            fundraise:
              type: boolean
            debtCollections:
              type: boolean
            virtualCards:
              type: boolean
            publicApi:
              type: boolean
          required:
            - fundraise
            - debtCollections
            - virtualCards
            - publicApi
        memberships:
          description: >-
            Every organization the user belongs to, for an organization
            switcher. Informational: the credential stays bound to organization,
            so acting on another one takes a credential for it. Empty for a
            service token. Apps you authorized see only the organization you
            chose
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              type:
                type: string
                enum:
                  - chapter
                  - national
              role:
                description: >-
                  The role's preset key: admin, editor, viewer, secretary,
                  chapter_consultant, store_manager, fundraiser or custom
                type: string
            required:
              - id
              - name
              - type
              - role
      required:
        - user
        - token
        - organization
        - role
        - roleName
        - scopes
        - features
        - memberships
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              description: >-
                A stable, machine-readable reason. One of `invalid_request`
                (400), `invalid_token` (401), `insufficient_scope` (403),
                `step_up_required` (403), `not_found` (404),
                `method_not_allowed` (405), `conflict` (409), `sync_expired`
                (410), `rate_limited` (429), `internal_error` (500),
                `provider_error` (502). New codes may be added; treat an unknown
                one by its HTTP status.
              type: string
            message:
              type: string
            param:
              type: string
            requiredScopes:
              type: array
              items:
                type: string
            requestId:
              type: string
            docsUrl:
              type: string
          required:
            - code
            - message
            - requestId
            - docsUrl
      required:
        - error
  responses:
    BadRequest:
      description: >-
        Invalid input: a parameter or body field fails validation (`param` names
        it), the body isn't JSON, or a business rule refused the request.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing, malformed, expired or revoked token.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The token lacks a required scope.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: No such resource, or the token's organization can't see it.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limited; see the `Retry-After` header.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnexpectedError:
      description: >-
        Any other failure, such as `internal_error` (500), as the `Error`
        envelope. A failure in front of the API (a gateway timeout, a request
        too large) may instead be plain text.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
        text/plain:
          schema:
            type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A Dueflow access token: `dfp_` (personal) or `dfs_` (service).
        Permissions are the token's scopes intersected with the role ceiling,
        re-evaluated per request.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.