Barclays Dynamic Client Registration API

Programmatically register TPP client applications with Barclays for Open Banking access.

Operations 1

POST /register #

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/dynamic-client-registration-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

barclays-dynamic-client-registration-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Dynamic Client Registration
  description: On-board to Barclays API Exchange using an EIDAS certificate, and retrieve credentials to consume our PSD2
    APIs.
  version: v1.10
x-method: searched
x-source: https://developer.barclays.com/api/apis/versions/ace18310-2523-49f0-a66d-4c6e37aae59f.bdn/design?specification=oas31
x-harvested: '2026-09-04'
x-harvested-note: Verbatim OpenAPI 3.1 design export from the Barclays API Exchange registry (developer.barclays.com), fetched
  anonymously. The untouched export is in openapi/_original/barclays-dynamic-client-registration-openapi.json. The UK Open
  Banking documents carry OBIE (openbanking.org.uk) in info.contact/termsOfService because they are the OBIE standard contract
  as Barclays implements and publishes it — the API, the registry record and the host are Barclays'.
paths:
  /register:
    post:
      description: This endpoint enables a TPP to submit a request to Barclays, for the purpose of creating OAuth clients,
        that are registered with Barclays Authorization server.
      operationId: post_register
      parameters:
      - name: Correlation-ID
        in: header
        description: An identifier for the current call chain that can be used to tie together log entries on multiple layers
          (e.g. client, server, mainframe). This identifier must be designed to be unique across all applications in the bank.
        required: true
        schema:
          type: string
          description: An identifier for the current call chain that can be used to tie together log entries on multiple layers
            (e.g. client, server, mainframe). This identifier must be designed to be unique across all applications in the
            bank.
          maxLength: 64
          minLength: 16
          pattern: ^[a-zA-Z0-9-+/=_]{16,64}$
      - name: X-Forwarded-For
        in: header
        description: IP Address of requesting client
        required: false
        schema:
          type: string
          description: IP Address of requesting client
          maxLength: 4094
          minLength: 7
          pattern: ^(?!\s)([0-9a-z.,:\s]{7,4094})$
      - name: X-SSLClientCert
        in: header
        description: EIDAS client certificate from Mutual TLS
        required: false
        schema:
          type: string
          description: EIDAS client certificate from Mutual TLS
          maxLength: 8192
          minLength: 1
          pattern: ^(?!\s)([a-zA-Z0-9-+\/=]{1,8192})$
      - name: X-SSLClientCertDN
        in: header
        description: EIDAS certificate DN
        required: true
        schema:
          type: string
          description: EIDAS certificate DN
          maxLength: 1024
          minLength: 1
          pattern: ^(?!\s)([a-zA-Z0-9-.,@_%\/=\s]{1,1024})$
      - name: X-SSLClientCertIssuerDN
        in: header
        description: EIDAS certificate Issuer DN
        required: true
        schema:
          type: string
          description: EIDAS certificate Issuer DN
          maxLength: 1024
          minLength: 1
          pattern: ^(?!\s)([a-zA-Z0-9-.,@_%\/=\s\\]{1,1024})$
      - name: X-SSLClientCertSN
        in: header
        description: EIDAS certificate Serial Number
        required: true
        schema:
          type: string
          description: EIDAS certificate Serial Number
          maxLength: 256
          minLength: 1
          pattern: ^(?!\s)([\w.:\s]{1,256})$
      - name: X-SSLClientCertChain
        in: header
        description: EIDAS certificate chain as  it received as part of Mutual TLS
        required: false
        schema:
          type: string
          description: EIDAS certificate chain as  it received as part of Mutual TLS
          maxLength: 8192
          minLength: 1
          pattern: ^(?!\s)([a-zA-Z0-9-+\/=\s]{1,8192})$
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DCRRequestType'
            example: null
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DCRResponseType'
              example: null
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostRegister400Response'
              example: null
        '500':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostRegister500Response'
              example: null
        '503':
          description: ''
          content:
            application/json:
              example: null
        '429':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostRegister429Response'
              example: null
components:
  schemas:
    PostRegister400Response:
      type: object
      properties:
        error_description:
          type: string
        error:
          type: string
      required:
      - error
    JWKSObjectType:
      type: object
      properties:
        keys:
          type: array
          items: {}
          maxItems: 100
          minItems: 1
      required:
      - keys
    PostRegister500Response:
      type: object
      properties:
        error_description:
          type: string
        error:
          type: string
      required:
      - error
    PostRegister429Response:
      type: object
      properties:
        error_description:
          type: string
        error:
          type: string
      required:
      - error
    SYMKEYType:
      type: object
      properties:
        kty:
          type: string
          enum:
          - RSA
          - EC
          - oct
        x5t#S256:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        use:
          type: string
          maxLength: 16
          minLength: 1
          pattern: ^(?!\s)([\w-]{1,16})$
        x5t:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        x5c:
          type: array
          items:
            type: string
            maxLength: 4096
            minLength: 1
            pattern: ^(?!\s)([a-zA-Z0-9-+\/=]{1,4096})$
          maxItems: 10
          minItems: 1
        kid:
          type: string
          maxLength: 512
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,512})$
        key_ops:
          type: array
          items:
            type: string
            maxLength: 16
            minLength: 1
            pattern: ^(?!\s)([\w-]{1,16})$
          maxItems: 10
          minItems: 1
        x5t#256:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        x5u:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        k:
          type: string
          maxLength: 2048
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,2048})$
        alg:
          type: string
          maxLength: 32
          minLength: 1
          pattern: ^(?!\s)([\w+-]{1,32})$
      required:
      - k
      - kid
      - kty
      - use
      - x5c
    DCRRequestType:
      type: object
      properties:
        token_endpoint_auth_signing_alg:
          type: string
          enum:
          - PS256
        client_uri:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        jwks:
          $ref: '#/components/schemas/JWKSObjectType'
        grant_types:
          type: array
          items:
            type: string
            enum:
            - client_credentials
            - authorization_code
            - implicit
            - refresh_token
            - urn:ietf:params:oauth:grant-type:jwt-bearer
          maxItems: 10
          minItems: 1
        application_type:
          type: string
          enum:
          - web
          - mobile
        logo_uri:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        tls_client_auth_subject_dn:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([a-zA-Z0-9.\-\s]{1,128})$
        redirect_uris:
          type: array
          items:
            type: string
            maxLength: 263
            minLength: 8
            pattern: ^(?!\s)(https|http)(\:\/\/)([A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
          maxItems: 10
          minItems: 1
        token_endpoint_auth_method:
          type: string
          enum:
          - private_key_jwt
        software_id:
          type: string
          maxLength: 22
          minLength: 1
          pattern: ^(?!\s)([\w]{1,22})$
        scope:
          type: string
          maxLength: 256
          minLength: 1
          pattern: ^(?!\s)([a-zA-Z0-9.\-\s]{1,256})$
        jwks_uri:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        tos_uri:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        software_version:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([a-zA-Z0-9.\-\s]{1,128})$
        request_object_signing_alg:
          type: string
          enum:
          - PS256
        client_name:
          type: string
          maxLength: 64
          minLength: 1
          pattern: ^(?!\s)([\w\s$£"ÖÄÜß"öäü!@#,.§$-]{1,64})$
        contacts:
          type: array
          items:
            type: string
            maxLength: 256
            minLength: 5
            pattern: ^(?=.{1,256}$)^([a-zA-Z0-9.!#$%&'*+\/=?^_`~-]{1,64})@(([a-zA-Z0-9-]{1,180}(\.[a-zA-Z0-9-]{1,62}){1,9}))$
          maxItems: 10
          minItems: 1
        policy_uri:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        response_types:
          type: array
          items:
            type: string
            enum:
            - code
            - token
            - id_token
            - id_token token
            - code id_token
            - code token
            - code id_token token
            - none
          maxItems: 10
          minItems: 1
        id_token_signed_response_alg:
          type: string
          enum:
          - PS256
      required:
      - client_name
      - contacts
      - grant_types
      - redirect_uris
      - response_types
      - scope
      - token_endpoint_auth_method
    RSAKEYType:
      type: object
      properties:
        oth:
          type: array
          items:
            type: object
            properties:
              r:
                type: string
                maxLength: 2048
                minLength: 0
                pattern: ^(?!\s)([\w=\/+-]{0,2048})$
              d:
                type: string
                maxLength: 2048
                minLength: 0
                pattern: ^(?!\s)([\w=\/+-]{0,2048})$
              t:
                type: string
                maxLength: 2048
                minLength: 0
                pattern: ^(?!\s)([\w=\/+-]{0,2048})$
        d:
          type: string
          maxLength: 2048
          minLength: 0
          pattern: ^(?!\s)([\w=\/+-]{0,2048})$
        e:
          type: string
          maxLength: 16
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,16})$
        use:
          type: string
          maxLength: 16
          minLength: 1
          pattern: ^(?!\s)([\w-]{1,16})$
        x5c:
          type: array
          items:
            type: string
            maxLength: 4096
            minLength: 1
            pattern: ^(?!\s)([a-zA-Z0-9-+\/=]{1,4096})$
          maxItems: 10
          minItems: 1
        kid:
          type: string
          maxLength: 512
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,512})$
        x5t#256:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        dp:
          type: string
          maxLength: 2048
          minLength: 0
          pattern: ^(?!\s)([\w=\/+-]{0,2048})$
        dq:
          type: string
          maxLength: 2048
          minLength: 0
          pattern: ^(?!\s)([\w=\/+-]{0,2048})$
        n:
          type: string
          maxLength: 2048
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,2048})$
        p:
          type: string
          maxLength: 2048
          minLength: 0
          pattern: ^(?!\s)([\w=\/+-]{0,2048})$
        kty:
          type: string
          enum:
          - RSA
          - EC
          - oct
        x5t#S256:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        q:
          type: string
          maxLength: 2048
          minLength: 0
          pattern: ^(?!\s)([\w=\/+-]{0,2048})$
        x5t:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        key_ops:
          type: array
          items:
            type: string
            maxLength: 16
            minLength: 1
            pattern: ^(?!\s)([\w-]{1,16})$
          maxItems: 10
          minItems: 1
        qi:
          type: string
          maxLength: 2048
          minLength: 0
          pattern: ^(?!\s)([\w=\/+-]{0,2048})$
        x5u:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        alg:
          type: string
          maxLength: 32
          minLength: 1
          pattern: ^(?!\s)([\w+-]{1,32})$
      required:
      - e
      - kid
      - kty
      - n
      - use
      - x5c
    ECKEYType:
      type: object
      properties:
        d:
          type: string
          maxLength: 512
          minLength: 0
          pattern: ^(?!\s)([\w]{0,512})$
        use:
          type: string
          maxLength: 16
          minLength: 1
          pattern: ^(?!\s)([\w-]{1,16})$
        crv:
          type: string
          enum:
          - P-256
          - P-384
          - P-521
        x5c:
          type: array
          items:
            type: string
            maxLength: 4096
            minLength: 1
            pattern: ^(?!\s)([a-zA-Z0-9-+\/=]{1,4096})$
          maxItems: 10
          minItems: 1
        kid:
          type: string
          maxLength: 512
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,512})$
        x5t#256:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        kty:
          type: string
          enum:
          - RSA
          - EC
          - oct
        x5t#S256:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        x5t:
          type: string
          maxLength: 128
          minLength: 1
          pattern: ^(?!\s)([\w=\/+-]{1,128})$
        key_ops:
          type: array
          items:
            type: string
            maxLength: 16
            minLength: 1
            pattern: ^(?!\s)([\w-]{1,16})$
          maxItems: 10
          minItems: 1
        x:
          type: string
          maxLength: 512
          minLength: 1
          pattern: ^(?!\s)([\w]{1,512})$
        x5u:
          type: string
          maxLength: 263
          minLength: 9
          pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$
        y:
          type: string
          maxLength: 512
          minLength: 1
          pattern: ^(?!\s)([\w]{1,512})$
        alg:
          type: string
          maxLength: 32
          minLength: 1
          pattern: ^(?!\s)([\w+-]{1,32})$
      required:
      - crv
      - kid
      - kty
      - use
      - x
      - x5c
      - y
    DCRResponseType:
      type: object
      properties:
        token_endpoint_auth_signing_alg:
          type: string
          enum:
          - PS256
        client_uri:
          type: string
        jwks:
          $ref: '#/components/schemas/JWKSObjectType'
        grant_types:
          type: array
          items:
            type: string
            enum:
            - client_credentials
            - authorization_code
            - implicit
            - refresh_token
            - urn:ietf:params:oauth:grant-type:jwt-bearer
        application_type:
          type: string
          enum:
          - web
          - mobile
        logo_uri:
          type: string
        tls_client_auth_subject_dn:
          type: string
        redirect_uris:
          type: array
          items:
            type: string
        token_endpoint_auth_method:
          type: string
          enum:
          - private_key_jwt
        client_id:
          type: string
        software_id:
          type: string
        client_secret_expires_at:
          type: number
        scope:
          type: string
        jwks_uri:
          type: string
        tos_uri:
          type: string
        software_version:
          type: string
        request_object_signing_alg:
          type: string
          enum:
          - PS256
        client_secret:
          type: string
        client_id_issued_at:
          type: number
        client_name:
          type: string
        contacts:
          type: array
          items:
            type: string
        policy_uri:
          type: string
        response_types:
          type: array
          items:
            type: string
            enum:
            - code
            - token
            - id_token
            - id_token token
            - code id_token
            - code token
            - code id_token token
            - none
        id_token_signed_response_alg:
          type: string
          enum:
          - PS256
      required:
      - client_id
      - client_name
      - contacts
      - grant_types
      - redirect_uris
      - response_types
      - scope
      - token_endpoint_auth_method