Predoc Record Upload API

The Record Upload API from Predoc — 3 operation(s) for record upload.

Operations 3

POST /v1/records/upload/anonymous Upload an Anonymous PDF Record #
GET /v1/records/uploads/{recordUploadId}/status Get Anonymous Record Request Status #
POST /v2/records/upload Upload Patient Records #

Documentation

Specifications

Schemas & Data

Other Resources

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/predoc:predoc-record-upload-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

predoc-record-upload-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Predoc Partner Record Upload API
  description: API for the Predoc platform to allow partners to request the retrieval of patient records.
  version: '1.1'
  contact: {}
servers:
- url: https://partner-api-stage.predoc.ai/api
tags:
- name: Record Upload
paths:
  /v1/records/upload/anonymous:
    post:
      description: Uploads a PDF record that is not yet associated with a patient profile. Only PDF files are accepted, with a maximum file size of 300 MB.
      operationId: RecordUploadController_uploadAnonymousRecord_v1
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              - fileName
              properties:
                file:
                  type: string
                  format: binary
                  description: PDF file upload.
                fileName:
                  type: string
                  description: File name. fileName is matched case-insensitively for duplicate detection. Changing only letter casing, such as Report.pdf to report.pdf, is treated as the same filename and may still be rejected as a duplicate. Pipe characters (|) are removed during upload.
                  maxLength: 255
                urgent:
                  type: boolean
                  description: Whether the upload is urgent.
                  default: false
      responses:
        default:
          description: The created anonymous record upload request ID and initial status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnonymousRecordUploadRespDto'
      security:
      - bearer: []
      summary: Upload an Anonymous PDF Record
      tags:
      - Record Upload
  /v1/records/uploads/{recordUploadId}/status:
    get:
      description: Retrieves the processing status for an anonymous record upload request.
      operationId: RecordUploadController_getAnonymousRecordUploadStatus_v1
      parameters:
      - name: recordUploadId
        required: true
        in: path
        description: The ID of the record upload request.
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnonymousRecordUploadStatusRespDto'
      security:
      - bearer: []
      summary: Get Anonymous Record Request Status
      tags:
      - Record Upload
  /v2/records/upload:
    post:
      description: Upload patient records to Predoc. V2 introduces protection against creating duplicate patients with the same PII.
      operationId: RecordUploadController_uploadRecordV2_v2
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecordUploadV2InpDto'
      responses:
        default:
          description: The patient ID and record upload ID for the uploaded record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordUploadV2RespDto'
      security:
      - bearer: []
      summary: Upload Patient Records
      tags:
      - Record Upload
components:
  schemas:
    AnonymousRecordUploadRespDto:
      type: object
      properties:
        recordUploadId:
          type: string
          description: The ID of the record upload request.
        status:
          type: string
          description: Current anonymous record upload processing status.
          enum:
          - IDENTIFYING
          - PROCESSING
          - READY_TO_VALIDATE
          - VALIDATING
          - VALIDATED
          - ERROR
          example: IDENTIFYING
        message:
          type: string
          description: Human-readable status or error message.
      required:
      - recordUploadId
      - status
    RecordUploadPatientData:
      type: object
      properties:
        firstName:
          type: string
          description: First name of the patient.
          example: Martha
          maxLength: 45
        lastName:
          type: string
          description: Last name of the patient.
          example: Rangel
          maxLength: 60
        dateOfBirth:
          type: string
          description: Date of birth of the patient, in `YYYY-MM-DD` format.
          example: '1970-03-10'
        phone:
          type: string
          description: Phone number of the patient, with no special characters (only digits).
          example: '7175501675'
          maxLength: 10
        email:
          type: string
          description: Email address of the patient.
          example: martha.rangel@domain.com
        address1:
          type: string
          description: Street address line 1.
          example: 4990 HOOVER RD
        address2:
          type: string
          description: Street address line 2.
          example: APT 227
        city:
          type: string
          description: Name of the city.
          example: GROVE CITY
        state:
          type: string
          description: Two letter state code for the address.
          example: OH
        postalCode:
          type: string
          description: Postal code for the address - 5 digits.
          example: '43123'
        genderName:
          type: string
          description: Gender of the patient.
          enum:
          - male
          - female
          - na
          - other
      required:
      - firstName
      - lastName
      - dateOfBirth
      - phone
      - postalCode
      - genderName
    RecordUploadV2InpDto:
      type: object
      properties:
        patientData:
          description: Patient data.
          allOf:
          - $ref: '#/components/schemas/RecordUploadPatientData'
        partnerPatientId:
          type: string
          description: Partner patient ID.
        appointmentDate:
          type: string
          description: Appointment date.
        fileName:
          type: string
          description: File name.
        notificationEmails:
          description: Email to send completion notification to. Should belong to the organization profile
          type: array
          items:
            type: string
        allowDuplicatePatient:
          type: boolean
          description: Bypass the duplicate patient demographics check. This check only applies when creating a new patient (i.e., no partnerPatientId is provided). Defaults to false.
          example: false
      required:
      - patientData
      - partnerPatientId
      - appointmentDate
      - fileName
      - notificationEmails
    RecordProviderInfoDto:
      type: object
      properties:
        firstName:
          type: string
          description: Provider first name.
        lastName:
          type: string
          description: Provider last name.
        designations:
          description: Provider designations.
          type: array
          items:
            type: string
        providerFacilityType:
          type: string
          description: Provider facility type.
        facilityName:
          type: string
          description: Facility name.
        email:
          type: string
          description: Provider email.
        inferredNpi:
          type:
          - string
          - 'null'
          description: Inferred provider NPI, or null when no inferred NPI exists.
      required:
      - designations
    RecordUploadPatientDocumentDto:
      type: object
      properties:
        documentId:
          type: string
          description: Generated patient document ID.
        documentType:
          type: string
          description: Core patient document type.
        downloadUrl:
          type: string
          description: Secure, time-limited URL to download the generated document.
          format: uri
        indexedRecordSpliceType:
          type:
          - string
          - 'null'
          description: Spliced indexed record classification for the generated document.
          enum:
          - CANVAS_SET
          - SEGMENT_SET
          - PRESPLICED
      required:
      - documentId
      - documentType
      - downloadUrl
    AnonymousRecordUploadStatusRespDto:
      type: object
      properties:
        recordUploadId:
          type: string
          description: The ID of the record upload request.
        status:
          type: string
          description: Current anonymous record upload processing status.
          enum:
          - IDENTIFYING
          - PROCESSING
          - READY_TO_VALIDATE
          - VALIDATING
          - VALIDATED
          - ERROR
          example: IDENTIFYING
        recipientProviders:
          description: Recipient provider information.
          type: array
          items:
            $ref: '#/components/schemas/RecordProviderInfoDto'
        sendingProviders:
          description: Sending provider information.
          type: array
          items:
            $ref: '#/components/schemas/RecordProviderInfoDto'
        originalDocumentDownloadUrl:
          type: string
          description: Secure URL to download the originally uploaded document. The URL expires after approximately 15 minutes; fetch the status again to receive a fresh URL.
          format: uri
        documents:
          description: Generated anonymous record upload output documents with generated patient document IDs, document types, and secure download URLs.
          type: array
          items:
            $ref: '#/components/schemas/RecordUploadPatientDocumentDto'
      required:
      - recordUploadId
      - status
      - originalDocumentDownloadUrl
    RecordUploadV2RespDto:
      type: object
      properties:
        patientId:
          type: string
          description: The ID of the patient associated with the uploaded record.
          format: uuid
        recordUploadId:
          type: string
          description: The ID of the record upload.
          format: uuid
      required:
      - patientId
      - recordUploadId
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
x-provenance:
  method: searched
  source: https://docs.predoc.ai/reference
  harvested: '2026-10-14'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://docs.predoc.ai/reference/authcontroller_signin_v1.md
  - https://docs.predoc.ai/reference/curatedpatientdatacontroller_getcuratedpatientdata_v1.md
  - https://docs.predoc.ai/reference/documentcontroller_getpatientclinicalsummary_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_addrequesttoexistingpatient_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_createpatient_v2.md
  - https://docs.predoc.ai/reference/patientcontroller_getavailablepatientchemistries_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_getpatientinformation_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_getpatientlabresultsbysearch_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_getpatientrequests_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_requestpatientclinicalsummary_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_searchpatientdocuments_v2.md
  - https://docs.predoc.ai/reference/patientcontroller_searchpatientsbyinformation_v1.md
  - https://docs.predoc.ai/reference/patientcontroller_updatepatientinformation_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientadditionalrecords_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientdocuments_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientdrugallergies_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientfacesheetoutput_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientfacesheets_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatienthiedocs_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientimagingresults_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientlabtests_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientmedications_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientotherrecords_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientprocedurenotes_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientproviderfacilitynotes_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientvaccinedocuments_v1.md
  - https://docs.predoc.ai/reference/patientdocumentscontroller_getpatientvaccinerecords_v1.md
  - https://docs.predoc.ai/reference/recorduploadcontroller_getanonymousrecorduploadstatus_v1.md
  - https://docs.predoc.ai/reference/recorduploadcontroller_uploadanonymousrecord_v1.md
  - https://docs.predoc.ai/reference/recorduploadcontroller_uploadrecordv2_v2.md
  - https://docs.predoc.ai/reference/requestcontroller_createrecordrequestv2_v2.md
  - https://docs.predoc.ai/reference/requestcontroller_facesheetconfigs_v1.md
  - https://docs.predoc.ai/reference/requestcontroller_getlistofrecordrequests_v2.md
  - https://docs.predoc.ai/reference/requestcontroller_updateexistingrecordrequest_v1.md
  - https://docs.predoc.ai/reference/retrievalcontroller_closeretrieval_v1.md
  - https://docs.predoc.ai/reference/retrievalcontroller_getretrieval_v1.md
  - https://docs.predoc.ai/reference/webhookconfigurationcontroller_createwebhookconfiguration_v1.md
  - https://docs.predoc.ai/reference/webhookconfigurationcontroller_deletewebhookconfiguration_v1.md
  - https://docs.predoc.ai/reference/webhookconfigurationcontroller_listwebhookconfigurations_v1.md
  - https://docs.predoc.ai/reference/webhookconfigurationcontroller_updatewebhookconfiguration_v1.md
  merge:
    pages: 40
    deduped: 88
    conflicts_kept_first: 0