ClickFunnels User API

Users

Operations 3

GET /users List Users #
GET /users/{id} Fetch User #
GET /me Fetch My User #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clickfunnels:clickfunnels-user-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clickfunnels-user-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ClickFunnels User API
  termsOfService: https://www.clickfunnels.com/terms-of-service
  contact:
    name: ClickFunnels API Team
    url: https://developers.myclickfunnels.com
  x-logo:
    url: https://statics.myclickfunnels.com/image/1126065/file/31edf05760fafe41a82f16a668ab251f.png
  description: 'The ClickFunnels REST API that powers webhooks, native integrations, and Zapier lets you manage your ClickFunnels data, automate your workflows, and recreate ClickFunnels functionality in your own apps.


    ### For AI agents


    This document is the catalogue: every operation ClickFunnels exposes over REST is described here, with a unique operationId, typed schemas, and the scopes it needs. It is served from `/openapi.json`, `/openapi.yaml`, `/api/openapi.{json,yaml}`, and `/api/v2/openapi.{json,yaml}` on the accounts host.


    Three things it does not describe, each one request away:


    - MCP server: the app-native Model Context Protocol server (Streamable HTTP, OAuth 2.1 with PKCE). Prefer it over raw REST when your client supports MCP - it describes itself at runtime.

    - Skill guides, also as an Agent Skills index: one task guide per job (pages, blogs, products, orders, workflows, emails, courses, stats, external SDK pages). Read the guide that matches your job before your first write. llms.txt covers when to use ClickFunnels at all, how to get credentials, and how to behave around rate limits.

    - Protected resource metadata (RFC 9728) and authorization server metadata (RFC 8414): the scope vocabulary and the OAuth endpoints. Dynamic client registration is for MCP clients only.


    On ClickFunnels-owned API hosts (`myclickfunnels.com` and its subdomains), the OpenAPI specification responses and API authentication failures (401, or 403 for insufficient scope) carry those links in an RFC 8288 `Link` header, so clients can discover the documentation and authentication metadata from those responses. Requests sent through a customer''s custom domain keep the Bearer challenge but omit those discovery pointers.'
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  version: 2.0.0
servers:
- url: https://{subdomain}.myclickfunnels.com/api/v2
  description: ClickFunnels API
  variables:
    subdomain:
      default: myworkspace
security:
- BearerAuth: []
- OAuth2: []
tags:
- name: User
  description: Users
paths:
  /users:
    get:
      tags:
      - User
      summary: List Users
      description: 'List users for the current account. Note: an OAuth/API integration authenticates as a

        **platform-agent user** (e.g. "Default API Client"), so this endpoint is scoped to that

        agent and typically returns only it — it is **not** the way to enumerate the human team

        members. To find real team members (for example a workflow `notify_step`''s `user_ids`),

        use `GET /api/v2/teams/{team_id}/memberships` and read each membership''s `user_id`

        (`notify_step` only accepts non-platform team members).'
      operationId: listUsers
      parameters:
      - $ref: '#/components/parameters/after'
      - $ref: '#/components/parameters/per_page'
      - $ref: '#/components/parameters/sort_order'
      - $ref: '#/components/parameters/sort_property'
      responses:
        '200':
          description: OK
          headers:
            Pagination-Next:
              $ref: '#/components/headers/PaginationNext'
            Link:
              $ref: '#/components/headers/Link'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserAttributes'
              example:
              - id: 9
                public_id: QxvoAS
                email: test@email.com
                first_name: Kevin
                last_name: Hoppe
                time_zone: Pacific Time (US & Canada)
                locale: en
                created_at: '2025-01-01T00:00:00.000Z'
                updated_at: '2025-01-01T00:00:00.000Z'
                memberships:
                - id: 10
                  public_id: vYxaJB
                  team_id: 4
                  user_id: 9
                  user_first_name: null
                  user_last_name: null
                  user_profile_photo_id: null
                  user_email: null
                  added_by_id: null
                  platform_agent_of_id: null
                  role_ids:
                  - admin
                  created_at: '2025-01-27T12:44:11.708Z'
                  updated_at: '2025-01-27T12:44:11.776Z'
                  user:
                    id: 4
                    public_id: WJrGjY
                    name: ClickFunnels
                    time_zone: Eastern Time (US & Canada)
                    locale: en
                    created_at: '2025-01-27T12:43:53.368Z'
                    updated_at: '2025-07-15T11:27:53.059Z'
                    billing_subscriptions:
                    - id: 4
                      public_id: WYrGvz
                      team_id: 4
                      status: active
                      cycle_ends_at: null
                      created_at: '2025-01-27T12:46:33.400Z'
                      updated_at: '2025-01-27T12:46:33.459Z'
                      included_prices:
                      - id: 4
                        subscription_id: 4
                        price_id: funnel_hacker_monthly_2022
                        quantity: 1
                        created_at: '2025-01-27T12:46:33.458Z'
                        updated_at: '2025-01-27T12:46:33.458Z'
              - id: 10
                public_id: boYPTU
                email: test@email.com
                first_name: Tandra
                last_name: Bechtelar
                time_zone: Pacific Time (US & Canada)
                locale: en
                created_at: '2025-01-01T00:00:00.000Z'
                updated_at: '2025-01-01T00:00:00.000Z'
                memberships:
                - id: 11
                  public_id: OezDJK
                  team_id: 6
                  user_id: 10
                  user_first_name: null
                  user_last_name: null
                  user_profile_photo_id: null
                  user_email: noreply+f59f2d7a1f5fbdf431a5772b5e4ca0e4@bullettrain.co
                  added_by_id: null
                  platform_agent_of_id: 6
                  role_ids:
                  - admin
                  created_at: '2025-01-27T12:46:33.953Z'
                  updated_at: '2025-01-27T12:46:33.959Z'
                  user:
                    id: 6
                    public_id: GJPOeQ
                    name: ClickFunnels Internal
                    time_zone: Eastern Time (US & Canada)
                    locale: en
                    created_at: '2025-01-27T12:46:33.481Z'
                    updated_at: '2025-03-07T16:47:17.574Z'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  hint:
                    type:
                    - string
                    - 'null'
                    description: 'The next step for the caller: how to authenticate, which scope was missing, or where the route list lives. Always present, and null when this error has no next step to offer.'
              example:
                error: API key missing or invalid
                hint: 'Send the token as `Authorization: Bearer <token>`. Create one under Account > Team > Platform Applications (a workspace API key), or obtain one with OAuth 2.1; both use the same scopes. See https://developers.myclickfunnels.com/docs/authentication, or append .md to that URL for markdown.'
        '422':
          $ref: '#/components/responses/InvalidPageSize'
  /users/{id}:
    get:
      tags:
      - User
      summary: Fetch User
      description: Retrieve a single user
      operationId: fetchUser
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAttributes'
              example:
                id: 11
                public_id: nQDZEX
                email: test@email.com
                first_name: Eugenio
                last_name: Watsica
                time_zone: Pacific Time (US & Canada)
                locale: en
                created_at: '2025-01-01T00:00:00.000Z'
                updated_at: '2025-01-01T00:00:00.000Z'
                memberships:
                - id: 14
                  public_id: RegNjN
                  team_id: 2
                  user_id: 11
                  user_first_name: null
                  user_last_name: null
                  user_profile_photo_id: null
                  user_email: noreply+557af4afa3ddc7d542ae242fef455a41@bullettrain.co
                  added_by_id: null
                  platform_agent_of_id: 7
                  role_ids:
                  - admin
                  created_at: '2025-01-27T12:46:38.579Z'
                  updated_at: '2025-01-27T12:46:38.587Z'
                  user:
                    id: 2
                    public_id: OjMAjZ
                    name: System Admin Team Team
                    time_zone: Pacific Time (US & Canada)
                    locale: en
                    created_at: '2025-01-27T12:42:38.175Z'
                    updated_at: '2025-03-07T16:46:55.374Z'
                    billing_subscriptions:
                    - id: 1
                      public_id: BvJXjb
                      team_id: 2
                      status: active
                      cycle_ends_at: null
                      created_at: '2025-01-27T12:42:44.975Z'
                      updated_at: '2025-01-27T12:42:45.038Z'
                      included_prices:
                      - id: 1
                        subscription_id: 1
                        price_id: basic_monthly_2022
                        quantity: 1
                        created_at: '2025-01-27T12:42:45.037Z'
                        updated_at: '2025-01-27T12:42:45.037Z'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  hint:
                    type:
                    - string
                    - 'null'
                    description: 'The next step for the caller: how to authenticate, which scope was missing, or where the route list lives. Always present, and null when this error has no next step to offer.'
              example:
                error: API key missing or invalid
                hint: 'Send the token as `Authorization: Bearer <token>`. Create one under Account > Team > Platform Applications (a workspace API key), or obtain one with OAuth 2.1; both use the same scopes. See https://developers.myclickfunnels.com/docs/authentication, or append .md to that URL for markdown.'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  hint:
                    type:
                    - string
                    - 'null'
                    description: 'The next step for the caller: how to authenticate, which scope was missing, or where the route list lives. Always present, and null when this error has no next step to offer.'
              example:
                error: User not found
                hint: null
  /me:
    get:
      tags:
      - User
      summary: Fetch My User
      description: 'This endpoint returns the user data for the currently authenticated user.

        It is useful for quickly retrieving user information without knowing the user ID.

        It also includes optional data if the current user is a platform agent.'
      operationId: fetchMyUser
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                title: My User
                description: Current user data with optional platform agent information
                properties:
                  id:
                    type: integer
                    description: User ID
                  public_id:
                    type:
                    - string
                    description: User public ID
                  email:
                    type: string
                    description: Email Address
                  first_name:
                    type: string
                    description: First Name
                  last_name:
                    type: string
                    description: Last Name
                  time_zone:
                    type:
                    - string
                    - 'null'
                    description: 'The human-readable time zone set manually by a ClickFunnels user or dynamically by the app.

                      Read more about time zones and how to map them back to the TZ standard in [our Time Zones guide.](https://dash.readme.com/project/cf2/v2/docs/timezones).

                      '
                  locale:
                    type:
                    - string
                    description: The main language used to create a new website.
                    enum:
                    - en
                    - ja
                    - pt
                  created_at:
                    type:
                    - string
                    - 'null'
                    format: date-time
                    description: Created at
                  updated_at:
                    type:
                    - string
                    - 'null'
                    format: date-time
                    description: Updated at
                  connected_workspace:
                    type:
                    - object
                    - 'null'
                    description: 'The connected workspace for the user, if the user''s access is

                      scoped to a single workspace. This can happen in the case of

                      OAuth, where the `/me` subject is a user who is a platform

                      agent acting on behalf of the ClickFunnels workspace users.

                      The platform agent was authorized by a team admin to act on

                      behalf of the connected workspace.

                      '
                    properties:
                      team_id:
                        type: integer
                        description: Team ID of the connected workspace
                      team_name:
                        type: string
                        description: Name of the team associated with the connected workspace
                      workspace_id:
                        type: integer
                        description: Workspace ID of the connected workspace
                      workspace_name:
                        type: string
                        description: Name of the connected workspace
                      workspace_url:
                        type: string
                        description: URL of the connected workspace
                      workspace_currency:
                        type: string
                        description: ISO 4217 currency code
                        example: USD
                  platform_application:
                    type:
                    - object
                    - 'null'
                    description: 'The connected platform application. It''s only present if the

                      `/me` subject user is an agent of a different platform who

                      was authorized by a team admin to act on behalf of the

                      connected workspace.

                      '
                    properties:
                      id:
                        type: integer
                        description: ID of the platform application
                      public_id:
                        type: string
                        description: Public ID of the platform application
                      team_id:
                        type: integer
                        description: Team ID associated with the platform application
              example:
                id: 1
                public_id: tOACcL
                email: ines_lang@gibson.com
                first_name: Marcell
                last_name: Mertz
                time_zone: Pacific Time (US & Canada)
                locale: en
                created_at: '2025-06-25T10:13:57.348Z'
                updated_at: '2025-06-25T10:13:57.348Z'
                connected_workspace:
                  team_id: 1
                  team_name: Team Alpha
                  workspace_id: 2
                  workspace_name: Workspace Beta
                  workspace_url: https://workspace-beta.example.com
                  workspace_currency: USD
                platform_application:
                  id: 11
                  public_id: OjzDYD
                  team_id: 4
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  hint:
                    type:
                    - string
                    - 'null'
                    description: 'The next step for the caller: how to authenticate, which scope was missing, or where the route list lives. Always present, and null when this error has no next step to offer.'
              example:
                error: API key missing or invalid
                hint: 'Send the token as `Authorization: Bearer <token>`. Create one under Account > Team > Platform Applications (a workspace API key), or obtain one with OAuth 2.1; both use the same scopes. See https://developers.myclickfunnels.com/docs/authentication, or append .md to that URL for markdown.'
components:
  parameters:
    id:
      name: id
      in: path
      required: true
      schema:
        type: string
    per_page:
      name: per_page
      in: query
      required: false
      description: Records per page. Defaults to 20; raise it up to 100 for bulk reads. A larger value returns 100 records. Zero, a negative or a non-integer value is a 422. The `Link` next-page URL keeps the value, so a client following it keeps the page size. More [in our guides](https://developers.myclickfunnels.com/docs/pagination).
      schema:
        type: integer
        minimum: 1
        default: 20
    sort_property:
      name: sort_property
      in: query
      description: 'Sort property of a list response. The default is id and thus the created_at order.

        If you sort by other properties, we additionally sort by id implicitly as a secondary sort property, so that you can rely on the sort order to be deterministic even if the main sort property ends up with the same values.

        '
      required: false
      schema:
        type: string
        enum:
        - id
        - updated_at
    sort_order:
      name: sort_order
      in: query
      description: Sort order of a list response. Use 'desc' to reverse the default 'asc' (ascending) sort order. Examples [in our guides](https://developers.myclickfunnels.com/docs/pagination).
      required: false
      schema:
        type: string
        enum:
        - asc
        - desc
    after:
      name: after
      in: query
      required: false
      schema:
        type: string
      description: ID of item after which the collection should be returned. More examples and info about pagination [in our guides](https://developers.myclickfunnels.com/docs/pagination).
  responses:
    InvalidPageSize:
      description: Unprocessable Entity - `per_page` must be a positive integer.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              hint:
                type:
                - string
                - 'null'
                description: Next step for the caller, or null when no additional guidance applies.
          example:
            error: 'Request unprocessable: per_page must be a positive integer, capped at 100 (got "0")'
            hint: null
  schemas:
    UserAttributes:
      type: object
      title: Profile
      description: 'A user profile. This includes **platform-agent** users — the synthetic user an OAuth/API

        client authenticates as (e.g. "Default API Client") — as well as human users. Workflow

        `notify_step` targets exclude platform agents (they resolve against non-platform team

        members); discover those via `GET /api/v2/teams/{team_id}/memberships`.

        '
      properties:
        id:
          type: integer
          description: User ID
        public_id:
          type:
          - string
          - 'null'
          description: User public ID
        email:
          type: string
          description: Email Address
        first_name:
          type: string
          description: First Name
        last_name:
          type: string
          description: Last Name
        time_zone:
          type:
          - string
          - 'null'
          description: Your Time Zone
        locale:
          type:
          - string
          - 'null'
          description: Language
        created_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Signed up
        updated_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Updated
      example:
        id: 1
        public_id: prbtEx
        email: test@email.com
        first_name: Lili
        last_name: Stiedemann
        time_zone: Pacific Time (US & Canada)
        locale: en
        created_at: '2025-01-01T00:00:00.000Z'
        updated_at: '2025-01-01T00:00:00.000Z'
  headers:
    PaginationNext:
      description: ID of the last item in the current response after which more records exist. You can use it in an `after` query parameter for cursor-based pagination to get to the next page.
      schema:
        type: string
    Link:
      description: A direct link to the next page for the cursor-based pagination. It includes the `after` and the Pagination-Next ID value.
      schema:
        type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'A workspace API key or an OAuth access token, sent as `Authorization: Bearer <token>`.


        Both carry the same scope vocabulary as the `OAuth2` scheme below. Category-only

        scopes restrict access to the categories they name. Coarse wildcards remain additive:

        `read contacts:read` reads every category, while `write contacts:read` can write every

        category. Omit coarse scopes when restricting access to specific categories.

        Legacy tokens with only coarse scopes retain their existing unrestricted access;

        a bare `read` scope alone does not enforce read-only access.

        '
    OAuth2:
      type: oauth2
      description: 'OAuth 2.0 authorization code flow for REST integrations. Create a Platform Application

        and follow `https://developers.myclickfunnels.com/docs/oauth-20` to connect users.

        Authorization server metadata is published at

        `https://accounts.myclickfunnels.com/.well-known/oauth-authorization-server`.

        Dynamic client registration at `/oauth/register` is for MCP clients only; MCP-scoped

        tokens must use `https://agents.myclickfunnels.com/mcp`, not the REST API.


        Scopes are least-privilege by category. Ask for the two coarse wildcards (`read`,

        `write`) only when an integration genuinely needs the whole workspace; otherwise ask

        for the `<category>:read` / `<category>:write` pairs you use. `write` implies `read`

        for the same category. Protected resource metadata (RFC 9728) for this API lives at

        `https://accounts.myclickfunnels.com/.well-known/oauth-protected-resource`.

        '
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.myclickfunnels.com/oauth/authorize
          tokenUrl: https://accounts.myclickfunnels.com/oauth/token
          refreshUrl: https://accounts.myclickfunnels.com/oauth/token
          scopes:
            read: Read any resource in the granted workspaces
            write: Read and write any resource in the granted workspaces
            contacts:read: Read Contacts
            contacts:write: Read and write Contacts
            workflows:read: Read Workflows (Automations)
            workflows:write: Read and write Workflows (Automations)
            funnels:read: Read Funnels
            funnels:write: Read and write Funnels
            sites:read: Read Sites & Design
            sites:write: Read and write Sites & Design
            courses:read: Read Courses
            courses:write: Read and write Courses
            emails:read: Read Emails
            emails:write: Read and write Emails
            blog:read: Read Blog
            blog:write: Read and write Blog
            community:read: Read Community
            community:write: Read and write Community
            appointments:read: Read Appointments
            appointments:write: Read and write Appointments
            opportunities:read: Read Opportunities
            opportunities:write: Read and write Opportunities
            store:read: Read Store
            store:write: Read and write Store
            forms:read: Read Forms
            forms:write: Read and write Forms
            media:read: Read Media
            media:write: Read and write Media
            webhooks:read: Read Webhooks
            webhooks:write: Read and write Webhooks
            account:read: Read Account
            account:write: Read and write Account
            reference:read: Read Reference Data
            reference:write: Read and write Reference Data
externalDocs:
  description: More in-depth guides and further resources
  url: https://developers.myclickfunnels.com
x-provenance:
  method: harvested
  publisher: ClickFunnels
  source: https://accounts.myclickfunnels.com/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)