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

# List consent signing keys

> Retrieve the list of consent signing keys registered for the authenticated user.



## OpenAPI

````yaml docs/oas/myaccount/myaccount-api-oas.json GET /consent-signing-keys
openapi: 3.1.0
info:
  title: My Account
  version: '1.0'
  description: >-
    The Auth0 My Account API provides a dedicated set of endpoints for users to
    manage their own account information. Customers can use these APIs to build
    self-service experiences in their applications or progressively add details
    to a user account.


    The My Account API operates within the context of the currently logged-in
    user and can be used directly within user-facing applications.


    :::tip Using Auth0 domain vs. custom domain


    The My Account API supports using your canonical Auth0 domain or your custom
    domain, but you must use the same one throughout the entire process,
    including:


    - Getting an access token

    - Setting the audience value

    - Calling the My Account API endpoint


    For more information, read [Custom
    Domains](https://auth0.com/docs/customize/custom-domains).


    :::


    ## Activate the My Account API


    You can activate the My Account API for your tenant in the Auth0 Dashboard:


    1. Navigate to Authentication > APIs.

    2. Locate the MyAccount API banner.

    3. Select Activate.


    ![](https://images.ctfassets.net/cdy7uua7fh8z/DGkDQNIHcegN8vtQyEvF3/a2e98b06867701a66fa1f1b3df1c996b/My_Account_API_-_Activate.png)


    By default, the My Account API is created with the following application API
    access policies:


    `require_client_grant` for user flows


    `deny_all` for client (machine-to-machine) flows


    For an application to access the My Account API on the user's behalf, you
    must explicitly create a client grant for that application, which allows you
    to define the maximum scopes the application can request. Alternatively, you
    can change the policy for user access flows to allow_all, which allows any
    application in your tenant to request any scope from the My Account API.


    Because the My Account API exposes sensitive information and operations,
    Auth0 does not recommend using allow_all for user access flows. You should
    follow a least privilege principle with the My Account API to ensure
    applications only get access to what they truly need, minimizing potential
    security risks.


    The final permissions granted to the application will be determined by the
    intersection of the scopes allowed by the application API access policy, the
    Role-Based Access Control (RBAC) permissions assigned to the end user, and
    any user consent given (if applicable).


    :::info Supported flows


    You cannot update the application API policy for client access to the My
    Account API, which means you cannot access the My Account API using the
    Client Credentials Flow.


    :::


    To learn more about how to manage application API access policies and their
    associated client grants, read [Application Access to APIs: Client
    Grants](https://auth0.com/docs/get-started/applications/application-access-to-apis-client-grants).


    ## Get an access token


    You can get an access token for the My Account API in the same way you'd get
    an access token for one of your own APIs.


    :::info &nbsp

    If you're going to allow the My Account API to perform sensitive operations
    (such as enrolling an authentication method), we strongly recommend that you
    use [step-up
    authentication](https://auth0.com/docs/secure/multi-factor-authentication/step-up-authentication)
    to enforce additional security policies through [multi-factor authentication
    (MFA)](https://auth0.com/docs/secure/multi-factor-authentication).

    :::


    If you're using Universal Login, read the following articles:


    - [Call Your API Using the Authorization Code
    Flow](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow/call-your-api-using-the-authorization-code-flow)

    - [Call Your API Using the Authorization Code Flow with
    PKCE](https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce/call-your-api-using-the-authorization-code-flow-with-pkce)


    If you're using embedded login, read the following articles:


    - [Call Your API Using Resource Owner Password
    Flow](https://auth0.com/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow/call-your-api-using-resource-owner-password-flow)

    - [Login Flow with Native Passkeys
    API](https://auth0.com/docs/native-passkeys-api#login-flow)


    ## Examples


    ### Universal Login with authorization code flow


    **Step 1: Request authorization code**


    ```

    curl --request GET \
      --url 'https://{yourDomain}/authorize?response_type=code&client_id={yourClientId}&redirect_uri=%7ByourRedirectUri%7D&scope=create%3Ame%3Aauthentication_methods&offline_access=&audience=https%3A%2F%2F{yourDomain}%2Fme%2F'
    ```


    **Step 2: Exchange code for access token**


    ```

    curl --request POST \
      --url 'https://{yourDomain}/oauth/token' \
      --header 'content-type: application/json' \
      --data '{"grant_type": "authorization_code","client_id": "{yourClientId}","client_secret": "{yourClientSecret}","code": "{yourAuthorizationCode}","redirect_uri": "{yourRedirectUri}","audience": "{yourAudience}","scope": "create:me:authentication_methods","offline_access": ""}'
    ```


    ### Embedded login with native passkeys


    **Step 1: Request login challenge**


    ```

    curl --request POST \
      --url 'https://{yourDomain}/passkey/challenge' \
      --header 'content-type: application/json' \
      --data '{"client_id": "{yourClientId}"}'
    ```


    **Step 2: Authenticate existing user**


    ```

    curl --request POST \
      --url 'https://{yourDomain}/oauth/token' \
      --header 'content-type: application/json' \
      --data '{  "grant_type": "urn:okta:params:oauth:grant-type:webauthn",  "client_id": "{yourClientId}",  "scope": "create:me:authentication_methods offline_access",  "audience": "https://{yourDomain}/me/",  "auth_session": "{sessionIdFromTheFirstRequest}",  "authn_response": "{authenticatorResponse}"}'
    ```
servers:
  - url: https://{host}/me/v1
    variables:
      host:
        default: auth0.auth0.com
        description: Custom or canonical host name
security: []
tags:
  - name: factors
    description: Factors
    x-displayName: Factors
  - name: connected-accounts
    description: Connected Accounts
    x-displayName: Connected Accounts
  - name: authentication-methods
    description: Authentication Methods
    x-displayName: Authentication Methods
  - name: consents
    description: Consents
    x-displayName: Consents
  - name: organizations
    description: Organizations
    x-displayName: Organizations
  - name: profile
    description: Profile
    x-displayName: Profile
paths:
  /consent-signing-keys:
    get:
      tags:
        - consents
      summary: List consent signing keys
      description: >-
        Retrieve the list of consent signing keys registered for the
        authenticated user.
      operationId: listConsentSigningKeys
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSigningKeysConsentResponseContent'
          description: Successfully retrieved consent signing keys
          headers:
            x-ratelimit-limit:
              $ref: '#/components/headers/XRateLimitLimitHeader'
            x-ratelimit-reset:
              $ref: '#/components/headers/XRateLimitResetHeader'
            x-ratelimit-remaining:
              $ref: '#/components/headers/XRateLimitRemainingHeader'
            x-correlation-id:
              $ref: '#/components/headers/CorrelationIdHeader'
            traceparent:
              $ref: '#/components/headers/TraceparentHeader'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - Bearer-DPoP:
            - read:me:consent_signing_keys
      x-codeSamples: []
components:
  schemas:
    ListSigningKeysConsentResponseContent:
      type: object
      properties:
        keys:
          type: array
          description: List of consent signing keys registered for the authenticated user.
          items:
            $ref: '#/components/schemas/GetSigningKeyConsentResponseContent'
      required:
        - keys
      additionalProperties: false
    GetSigningKeyConsentResponseContent:
      type: object
      description: Summary of a consent signing key registered for a user.
      properties:
        kid:
          type: string
          description: The key identifier Auth0 assigned to this key.
          minLength: 1
          maxLength: 128
        device_identifier:
          type: string
          description: >-
            A human-readable label for the device holding the corresponding
            private key.
          minLength: 1
          maxLength: 128
        created_at:
          type: string
          format: date-time
          description: When the key was registered.
        expires_at:
          type: string
          format: date-time
          description: >-
            When the key expires and can no longer be used to verify consent
            decisions.
      required:
        - kid
        - device_identifier
        - created_at
        - expires_at
      additionalProperties: false
    ErrorResponse:
      properties:
        type:
          type: string
        status:
          type: number
        title:
          type: string
        detail:
          type: string
        validation_errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
      required:
        - type
        - status
        - title
        - detail
      type: object
      additionalProperties: false
    ValidationError:
      type: object
      properties:
        detail:
          type: string
        field:
          type: string
        pointer:
          type: string
        source:
          type: string
      required:
        - detail
      additionalProperties: false
  headers:
    XRateLimitLimitHeader:
      required: true
      description: >-
        The maximum number of requests permissible during the limit’s window
        window
      schema:
        type: number
    XRateLimitResetHeader:
      required: true
      description: >-
        The anticipated time (as a UNIX timestamp, in seconds) when the bucket
        will be replenished
      schema:
        type: number
    XRateLimitRemainingHeader:
      required: true
      description: >-
        The number of remaining requests remaining in the current window until
        requests are rejected
      schema:
        type: number
    CorrelationIdHeader:
      required: false
      description: >-
        Echoes the validated `x-correlation-id` supplied on the request, or a
        generated UUID v4 when none was supplied.
      schema:
        type: string
    TraceparentHeader:
      required: false
      description: >-
        A [W3C Trace Context](https://www.w3.org/TR/trace-context/) header
        echoing the inbound trace ID with a fresh child span ID.
      schema:
        type: string
    RetryAfterHeader:
      required: true
      description: The number of seconds the client should wait before making a new request
      schema:
        type: number
    XAuth0ErrorKindHeader:
      description: >-
        An indicator that the rate limit exceeded a is global (per tenant)
        limit.
      schema:
        type: string
        const: global-rate-limit
  responses:
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Unauthorized.
      headers:
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Forbidden.
      headers:
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
    TooManyRequests:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Too Many Requests.
      headers:
        retry-after:
          $ref: '#/components/headers/RetryAfterHeader'
        x-ratelimit-limit:
          $ref: '#/components/headers/XRateLimitLimitHeader'
        x-ratelimit-reset:
          $ref: '#/components/headers/XRateLimitResetHeader'
        x-ratelimit-remaining:
          $ref: '#/components/headers/XRateLimitRemainingHeader'
        x-auth0-error-kind:
          $ref: '#/components/headers/XAuth0ErrorKindHeader'
        x-correlation-id:
          $ref: '#/components/headers/CorrelationIdHeader'
        traceparent:
          $ref: '#/components/headers/TraceparentHeader'
  securitySchemes:
    Bearer-DPoP:
      type: http
      scheme: bearer
      description: Bearer and DPoP tokens are supported depending on the API configuration

````