Documents API

Manage your documents programmatically. Generate new documents and retrieve documents relevant to your accounts. This allows you to obtain important documentation with ease.

Operations 4

POST /documents Upload document #
GET /documents List document details #
GET /documents/{id} Get document details #
GET /documents/{id}/file Download a document #

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/documents-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

jp-morgan-chase-documents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Jp Morgan Chase Documents API
  contact:
    name: JPMC Technical Services Support
  version: '1.0'
  description: 'Operations tagged Documents across 2 of this provider''s published API definitions: jp-morgan-chase-digital-onboarding-api-openapi.yml, jp-morgan-chase-documents-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.payments.jpmorgan.com/onboarding/v1
  description: PRODUCTION-MTLS
- url: https://api-sandbox.payments.jpmorgan.com/onboarding/v1
  description: CLIENT TESTING-MTLS
- url: https://api-mock.payments.jpmorgan.com/onboarding/v1
  description: MOCK
- url: https://api.payments.jpmorgan.com/embedded/v1
  description: PRODUCTION - MTLS
- url: https://api-mock.payments.jpmorgan.com/embedded/v1
  description: MOCK
- url: https://api-sandbox.payments.jpmorgan.com/embedded/v1
  description: CLIENT TESTING - MTLS
tags:
- name: Documents
  description: Manage document upload and retrieval.
paths:
  /documents:
    post:
      parameters:
      - $ref: '#/components/parameters/TokenInHeader'
      - $ref: '#/components/parameters/IdempotencyKey'
      summary: Upload document
      description: 'This section allows the user to attach the binary file upload and meta-data associated with the document.

        '
      operationId: smbdo-uploadDocument
      tags:
      - Documents
      requestBody:
        description: 'This section allows the user to attach the binary file upload and meta-data associated with the document.

          '
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                documentData:
                  description: The document metadata.
                  type: string
                  example: '{"documentType":"DRIVERS_LICENSE","documentRequestId":"50002"}'
              required:
              - file
              - documentData
      responses:
        '201':
          description: Upload Successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentResponse'
              examples:
                DocumentsRes:
                  $ref: '#/components/examples/DocumentsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          $ref: '#/components/responses/409'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
      security:
      - Certs: []
        Token: []
      - Certs: []
      - BearerAuth: []
    get:
      parameters:
      - $ref: '#/components/parameters/TokenInHeader'
      - $ref: '#/components/parameters/ClientIdQuery'
      - $ref: '#/components/parameters/PartyIdQuery'
      - $ref: '#/components/parameters/PageNumber'
      - $ref: '#/components/parameters/PageSize'
      tags:
      - Documents
      summary: List document details
      description: 'Retrieves a list of document details.

        '
      operationId: smbdo-getAllDocumentDetails
      responses:
        '200':
          description: Ok.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListDocumentsResponse'
              examples:
                ListDocumentsRes:
                  $ref: '#/components/examples/ListDocumentsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
      security:
      - Certs: []
        Token: []
      - Certs: []
      - BearerAuth: []
    servers:
    - url: https://api.payments.jpmorgan.com/onboarding/v1
      description: PRODUCTION-MTLS
    - url: https://api-sandbox.payments.jpmorgan.com/onboarding/v1
      description: CLIENT TESTING-MTLS
    - url: https://api-mock.payments.jpmorgan.com/onboarding/v1
      description: MOCK
  /documents/{id}:
    get:
      parameters:
      - $ref: '#/components/parameters/TokenInHeader'
      - in: path
        name: id
        description: Unique document identifier.
        example: 62d29548-f55a-458e-b9bb-ed32a6a05a1b
        schema:
          type: string
        required: true
      tags:
      - Documents
      summary: Get document details
      description: 'Retrieve details of a document.

        '
      operationId: smbdo-getDocumentDetail
      responses:
        '200':
          description: Ok.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentResponse'
              examples:
                DocumentsRes:
                  $ref: '#/components/examples/DocumentsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
      security:
      - Certs: []
        Token: []
      - Certs: []
      - BearerAuth: []
    servers:
    - url: https://api.payments.jpmorgan.com/onboarding/v1
      description: PRODUCTION-MTLS
    - url: https://api-sandbox.payments.jpmorgan.com/onboarding/v1
      description: CLIENT TESTING-MTLS
    - url: https://api-mock.payments.jpmorgan.com/onboarding/v1
      description: MOCK
  /documents/{id}/file:
    get:
      parameters:
      - $ref: '#/components/parameters/TokenInHeader'
      - in: path
        name: id
        description: Unique Document identifier.
        example: 745ed6ce-c9e4-4d89-a1f9-74865e12cfc6
        schema:
          type: string
        required: true
      tags:
      - Documents
      summary: Download a document
      description: Download a document using its unique identifier.
      operationId: smbdo-downloadDocument
      responses:
        '200':
          description: Ok.
          content:
            application/pdf:
              schema:
                type: string
                format: byte
            image/png:
              schema:
                type: string
                format: byte
            image/jpeg:
              schema:
                type: string
                format: byte
            image/heic:
              schema:
                type: string
                format: byte
            application/csv:
              schema:
                type: string
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
      security:
      - Certs: []
        Token: []
      - Certs: []
      - BearerAuth: []
    servers:
    - url: https://api.payments.jpmorgan.com/onboarding/v1
      description: PRODUCTION-MTLS
    - url: https://api-sandbox.payments.jpmorgan.com/onboarding/v1
      description: CLIENT TESTING-MTLS
    - url: https://api-mock.payments.jpmorgan.com/onboarding/v1
      description: MOCK
components:
  schemas:
    DocumentTypeSmbdo:
      type: string
      description: Supported document types
      enum:
      - ANNUAL_FILINGS
      - ARTICLES_OF_ASSOCIATION
      - ARTICLES_OF_INCORPORATION
      - BANK_STATEMENT
      - BANKING_LICENSE
      - BEARER_SHARES_ATTESTATION
      - BENEFICIAL_OWNER_INFORMATION
      - BRAND_LOGO
      - BULK_MIGRATION
      - BUSINESS_LICENSE
      - BUSINESS_REGISTRATION_CERT
      - CERTIFICATE_OF_GOOD_STANDING
      - CERTIFICATE_OF_STATUS
      - COMMERCIAL_REGISTRY
      - CONSTITUTIONAL_DOCUMENT
      - CREDIT_CARD_STATEMENT
      - DETAILS_OF_DIRECTORS
      - DISCLOSURE_AND_CONSENT
      - DRIVERS_LICENSE
      - EIN
      - EVIDENCE
      - FILING_RECEIPT
      - GOV_ISSUED_ID_CARD
      - GOVERNMENT_REGISTERED_DOCUMENT
      - IDENTIFICATION_DOCUMENT
      - INCUMBENCY_CERTIFICATE
      - INSURANCE_DOCUMENT
      - IRS_DOCUMENT_TIN
      - JPMC_DISCLOSURE
      - LEGAL_DOCUMENTS
      - LLC_AGREEMENT
      - LOAN_ACCOUNT_STATEMENT
      - MAA
      - MOA
      - OFFERING_MEMO
      - OPERATING_AGREEMENT
      - OTHER_GOV_REGISTRATION_DOCS
      - OWNERSHIP_ATTESTATION
      - PARTNERSHIP_AGREEMENT
      - PASSPORT
      - SEC_FILINGS_10K
      - SIGNATURE_CARD
      - SSN_CARD
      - STANDARD_OPERATING_PROCEDURE
      - SUPPORT_CONTACT
      - TAX_DOCUMENT
      - TERMS_CONDITIONS
      - TRUST_AGREEMENT
      - TRUST_DEED
      - UTILITY_BILL
    DocumentMetadataSmbdo:
      type: object
      properties:
        key:
          $ref: '#/components/schemas/DocumentMetadataKeyEnum'
        value:
          type: string
          example: 73bd1c1d-6635-43ff-a8e5-b252926bdd9e
    ApiErrorContext:
      description: Context of the API error.
      type: object
      required:
      - message
      properties:
        code:
          type: string
          description: Short code that identifies the error - publicly cataloged and documented
          example: '11000'
        location:
          type: string
          enum:
          - BODY
          - QUERY
          - PATH
          - HEADER
          example: BODY
          description: Part of the request which is responsible for the reason
        field:
          type: string
          description: The location of the property or parameter in error
        message:
          type: string
          example: The server can not find the requested resource.
          description: Message describing the reason.
    DocumentResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        documentType:
          $ref: '#/components/schemas/DocumentTypeSmbdo'
        metadata:
          type: array
          items:
            $ref: '#/components/schemas/DocumentMetadataSmbdo'
          minItems: 0
          maxItems: 50
      required:
      - id
      - documentType
      - metadata
    ListDocumentsResponse:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/PageMetaData'
        documentDetails:
          type: array
          items:
            $ref: '#/components/schemas/DocumentResponse'
          minItems: 0
          maxItems: 100
    schemas-ApiError:
      description: An API error.
      type: object
      required:
      - title
      - httpStatus
      properties:
        title:
          type: string
          description: Short humanly-readable title of the error
          example: BAD_REQUEST
        httpStatus:
          type: integer
          description: HTTP status code
          example: 422
        traceId:
          type: string
          description: Internal assigned traced identifier
        requestId:
          type: string
          description: Client provided request identifier
        context:
          type: array
          items:
            $ref: '#/components/schemas/ApiErrorContext'
          description: Provides additional context and detail on the errors
          minItems: 0
          maxItems: 100
    ClientId:
      description: A client's unique ID
      example: '9000000333'
      type: string
      maxLength: 10
    PageMetaData:
      description: Page metadata.
      type: object
      properties:
        page:
          type: integer
          format: int32
          example: 0
          description: 'Page number.

            '
          minimum: 0
          maximum: 2147483647
        limit:
          type: integer
          format: int32
          example: 25
          description: 'Number of records per page.

            '
          minimum: 1
          maximum: 25
        total:
          type: integer
          format: int64
          example: 340
          description: 'Total number of items.

            '
          minimum: 0
          maximum: 9999999999
    DocumentMetadataKeyEnum:
      type: string
      enum:
      - DOCUMENT_REQUEST_ID
      - PARTY_ID
      - FILE_EXTENSION
      - COUNTRY
      - STATUS
      - UPLOAD_TIME
      - UPLOADED_FILE_NAME
      example: DOCUMENT_REQUEST_ID
    ApiError:
      type: object
      required:
      - title
      - httpStatus
      - error
      properties:
        title:
          type: string
          minLength: 1
          maxLength: 512
          description: Short humanly-readable title of the error
          example: BAD REQUEST
        httpStatus:
          type: integer
          minimum: 100
          maximum: 599
          format: int32
          description: HTTP status code
          example: 422
        traceId:
          type: string
          minLength: 0
          maxLength: 512
          description: Internal assigned traced identifier
        requestId:
          type: string
          minLength: 0
          maxLength: 512
          description: Client provided request identifier
        context:
          type: array
          items:
            $ref: '#/components/schemas/ApiErrorReasonV2'
          description: Provides additional context and detail on the validation errors
          minItems: 0
          maxItems: 100
    CreateDocumentResponse:
      type: object
      required:
      - id
      - type
      properties:
        id:
          type: string
          description: Unique document identifier
          example: 89eb5ab2-d688-43be-9b6d-a21dc87750b1
        type:
          type: string
          description: Document type (only ACCOUNT_CONFIRMATION_LETTER is currently supported)
          example: ACCOUNT_CONFIRMATION_LETTER
        parameters:
          $ref: '#/components/schemas/DocumentParameters'
    ApiErrorReasonV2:
      type: object
      description: Schema representing detailed reasons for an API error, including code, location, and message.
      required:
      - message
      properties:
        code:
          type: string
          example: '11000'
          description: Short code that identifies the error - publicly cataloged and documented
          minLength: 0
          maxLength: 5
        location:
          type: string
          enum:
          - BODY
          - QUERY
          - PATH
          - HEADER
          example: BODY
          description: Part of the request which is responsible for the reason
        field:
          type: string
          description: The location of the property or parameter in error
          minLength: 0
          maxLength: 512
        message:
          type: string
          example: Client with ID 0031234567 does not exist.
          description: Message describing the reason. This message can typically be displayed to your platform's users, except in cases specified otherwise
          minLength: 0
          maxLength: 2048
    DocumentParameters:
      type: object
      properties:
        accountId:
          type: string
          description: Unique account identifier
          example: f5246c6eb2c742a19c9c79327a769708
    FileDownloadData:
      type: string
      format: byte
      description: Document binary data
    CreateDocumentRequest:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          description: Document type (only ACCOUNT_CONFIRMATION_LETTER is currently supported)
          example: ACCOUNT_CONFIRMATION_LETTER
        parameters:
          $ref: '#/components/schemas/DocumentParameters'
  parameters:
    ClientIdQuery:
      name: clientId
      in: query
      description: Unique Client identifier.
      required: false
      example: '3000000001'
      schema:
        $ref: '#/components/schemas/ClientId'
    PartyIdQuery:
      name: partyId
      in: query
      description: Unique Party identifier.
      required: false
      example: '2000000555'
      schema:
        type: string
        maxLength: 10
    PageSize:
      name: limit
      in: query
      description: Number of records per page.
      required: false
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 25
        default: 25
    PageNumber:
      name: page
      in: query
      description: Page number.
      required: false
      schema:
        type: integer
        format: int32
        default: 0
        minimum: 0
        maximum: 2147483647
    TokenInHeader:
      name: token
      in: header
      description: JWT Client token
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 8192
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: 'Client generated unique idempotency key used in recognizing consecutive retries of the same request

        **Usage of V4 UUIDs is recommended.**'
      required: false
      schema:
        title: Idempotency Key
        description: 'A unique string that enables the API support idempotency by safely retrying requests without accidentally

          performing the same operation twice.'
        type: string
        minLength: 1
        maxLength: 36
        example: 1b036f9c-8c84-4ce6-b1dd-5979472945a1
    documentIdInPath:
      name: id
      in: path
      description: Unique document identifier
      schema:
        type: string
      required: true
      example: 89eb5ab2-d688-43be-9b6d-a21dc87750b1
  responses:
    '403':
      description: Forbidden - Unauthorized Access
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Forbidden
            httpStatus: 403
            context:
            - message: Platform is not authorized to access client.
    '500':
      description: Internal Server Error - Generic Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Internal Server Error
            httpStatus: 500
            context:
            - message: Something went wrong. Please try again later.
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Invalid Data
            httpStatus: 400
            context:
            - code: '10104'
              message: Client with ID [3000005555] does not exist.
              location: BODY
              field: clientId
    '401':
      description: Unauthenticated
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Unauthorized
            httpStatus: 401
            context:
            - message: Provided token does not follow required JWT format. It may also be missing mandatory parts
    '409':
      description: Conflict - Concurrent request detected
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Conflict
            httpStatus: 409
            context:
            - message: Concurrent request detected for clientId [3000005555]. Please try again later.
    '503':
      description: Service Unavailable - API Processing Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Service Unavailable
            httpStatus: 503
            context:
            - message: Service unavailable.
    '404':
      description: No data found for the criteria specified
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Not Found
            httpStatus: 404
            context:
            - message: Party with ID [2000000555] not found.
    '422':
      description: Request could not be processed due to semantic errors. Check error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/schemas-ApiError'
          example:
            title: Unprocessable Entity
            httpStatus: 422
            context:
            - message: Unable to perform Client Verification for clientId [3000005555] due to its Status.
    '503_2':
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            Error:
              description: Service Unavailable
              summary: Service Unavailable
              value:
                title: Service Unavailable
                httpStatus: 503
                error: SERVICE_UNAVAILABLE
    '500_2':
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            Error:
              description: Internal Server Error
              summary: Internal Server Error
              value:
                title: Internal Server Error
                httpStatus: 500
                error: INTERNAL_SERVER_ERROR
    '404_2':
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            Error:
              description: Not Found
              summary: Not Found
              value:
                title: Not Found
                httpStatus: 404
                error: NOT_FOUND
    '400_2':
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            Error:
              description: Bad Request
              summary: Bad Request
              value:
                title: Bad Request
                httpStatus: 400
                error: BAD_REQUEST
    '401_2':
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            Error:
              description: Unauthorized
              summary: Unauthorized
              value:
                title: Unauthorized Request
                httpStatus: 401
                error: UNAUTHORIZED
    '403_2':
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            Error:
              description: Forbidden
              summary: Forbidden
              value:
                title: Forbidden
                httpStatus: 403
                error: FORBIDDEN
  examples:
    DocumentsResponse:
      summary: Document details for given document upload
      description: Document details for document that was uploaded
      value:
        id: cd03133b-21e6-4d60-85aa-3eee61939b2e
        documentType: PASSPORT
        metadata:
        - key: STATUS
          value: ACTIVE
        - key: UPLOADED_FILE_NAME
          value: passport.png
        - key: FILE_EXTENSION
          value: png
        - key: DOCUMENT_REQUEST_ID
          value: '50000'
        - key: UPLOAD_TIME
          value: '2024-04-01T21:14:38.474Z'
    ListDocumentsResponse:
      summary: List of document details
      description: A list of document details
      value:
        metadata:
          page: 0
          limit: 25
          total: 1
        documentDetails:
        - id: 62d29548-f55a-458e-b9bb-ed32a6a05a1b
          documentType: TERMS_CONDITIONS
          metadata:
          - key: DOCUMENT_REQUEST_ID
            value: '3000001'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
x-refined-from:
- jp-morgan-chase-digital-onboarding-api-openapi.yml
- jp-morgan-chase-documents-api-openapi.yml
x-jpmc-securityDefinitions:
  JPMC-OAuth2:
    jpmc-claims:
      jpmc-roles: []
x-jpmc-security:
- JPMC-OAuth2:
    jpmc-claims:
      jpmc-roles: []