Upload a file
Upload a file to the server, this will return a presigned upload url to be used for the upload.
The presignedUploadURL is valid for 300 seconds (5 minutes) and can be used multiple times.
The input should contain the following information:
-
fileName: the name of the file to be uploaded -
fileType: the type of the file to be uploaded -
isSplit: whether the file is a split file or not (optional, default: false) -
isSplitExcel: whether to split Excel files by worksheets (optional, default: false) -
callbackURL: (optional) the URL that will be called after file processing. Must be a valid HTTPS URL.- If provided, this URL takes precedence over the API key’s default callback URL
- If not provided, the API key’s default callback URL will be used (if configured)
- The response includes
callbackURLSourceindicating whether the URL came from the request (“user”) or API key (“api_key”)
-
ocrModel: the OCR model to be used for file processing (optional). Available models:- English Models:
Beethoven_ENG_O5.6- OpenAI v6Beethoven_ENG_G5.5- Gemini v5Beethoven_ENG_GP25- Gemini Pro 2.5Beethoven_ENG_GP25.1- Gemini Pro 2.5 v1Beethoven_ENG_GP25.2- Gemini Pro 2.5 PDFBeethoven_CUS_O5.1- Custom OpenAI v8Beethoven_CUS_O5.2- Custom Gemini v13Unified (google-document-ai-ocr-gemini-v10)- Unified modelAegis (google-document-ai-ocr-gemini-aegis-v1)- Aegis model
- Chinese Models:
Beethoven_ZH_O5.9- Chinese OpenAI v9
- Japanese Models:
Beethoven_JP_O5.3- Japanese OpenAI v3Beethoven_JP_G5.4- Japanese Gemini fine-tuned
- Thai Models:
Beethoven_TH_O5.1- Thai OpenAI v1Beethoven_TH_G5.1- Thai Gemini v1
- English Models:
-
schemaLocking: whether the schema should be locked after the file is uploaded, must be one of true or false (optional) -
directoryId: the directory id where the file should be uploaded (optional) -
destinationPath: slash-delimited folder path where the file should be placed (e.g. “mammals/walrus”). Folders are auto-created if they do not exist. Can be used together with directoryId (optional) -
isEphemeral: whether the file and all related data should be deleted after the file is processed, must be one of true or false (optional, default: false) -
pageCount: page count of the file, used for early validation against page limits (optional)
- fileName: the name of the file to be uploaded
- fileType: the type of the file to be uploaded
- isSplit: whether the file is a split file or not
- callbackURL: the url that will be called after the file is uploaded
- ocrModel: the ocr model to be used for the file processing
- schemaLocking: whether the schema should be locked after the file is uploaded, must be one of true or false
- isEphemeral: whether to automatically delete a file. If this is set to “true”, then the file will be automatically deleted 24 hours after upload. (optional, default: false)
How It Works
- Request Upload URL: Submit file metadata to this endpoint
- Receive Presigned URL: Get a secure upload URL valid for 1 hour
- Upload File: Use the presigned URL to upload your file directly to storage
- Processing: File is automatically processed with specified OCR model and schema
- Callback (optional): Receive notification when processing is complete
Request Parameters
Request Body
The request body must contain a JSON object with the following properties:Responses
Idempotency-Key request header so a retry
cannot apply the change twice. See
Idempotent requests.Authorizations
API key for authentication
Headers
Optional opaque key (max 255 chars, UUIDv4 recommended) making this request idempotent for 24h: a retry with the same key and body replays the original response with Idempotent-Replayed: true.
Body
File name
"file.pdf"
File type
"application/pdf"
Is split
false
Is split excel - whether to split Excel files by worksheets
false
Callback URL
"https://example.com/callback"
OCR model
Beethoven_ENG_O5.6, Beethoven_ENG_G5.5, Beethoven_ENG_GP25, Beethoven_ENG_GP25.1, Beethoven_ENG_GP25.2, Beethoven_CUS_O5.1, Beethoven_CUS_O5.2, Unified (google-document-ai-ocr-gemini-v10), Aegis (google-document-ai-ocr-gemini-aegis-v1), Beethoven_ZH_O5.9, Beethoven_JP_O5.3, Beethoven_JP_G5.4, Beethoven_TH_O5.1, Beethoven_TH_G5.1, Beethoven_CUS_GP25.1, Beethoven_Direct_Form_Filling (GP2.5) "Beethoven_ENG_O5.6"
Schema locking
false
Directory Id
"649e2d2d2d2d2d2d2d2d2d2d"
Slash-delimited folder path for the uploaded document (e.g. "mammals/walrus"). Folders are auto-created if they do not exist. Can be used together with directoryId.
"mammals/walrus"
Is ephemeral
false
Page count of the PDF file. Used for early validation against page limits.
50
Optional request ID to group files uploaded together (e.g. from a zip). If not provided and the uploaded file is a zip, the zip file ID will be used.
"my-batch-request-123"
Retain the original file name of a ZIP upload. Only applies to zip uploads (fileType "application/zip" or a .zip file name) and is ignored for all other files. When true, the original zip name is preserved (control characters, path separators and ".." are stripped, leading/trailing dots and whitespace trimmed, capped at 255 characters) and surfaced on the extracted files as zipArchiveName. When false (default), the name is sanitized as before.
false
Response
Get a presigned upload url for upload file, after getting the result use the presignedUploadURL with a PUT method to send the request with the binary file, the presignedUploadURL is valid for 300 seconds (5 minutes) and can be used multiple times
The callback URL that will be used for notifications
Source of the callback URL: "user" if provided in request, "api_key" if from API key default
Slash-delimited folder path (e.g. "mammals/walrus"). Folders are auto-created if they do not exist.