👨‍💻 Parse PDF and Files Using API

In this article, we’ll see how to upload PDF and other files using the Parsio API.

This endpoint is used when you need to upload an actual file to Parsio. The request contains the file itself (binary data), which Parsio then processes and parses.

Typical use cases include:

  • Parsing PDF documents

  • Parsing scanned files and images

  • Parsing Word, Excel, or other file formats

This approach is required whenever the document exists as a file rather than as raw text.

Authentication

To access the API, you will need the API key that you will find in your account:

This API key should be included in the X-API-Key HTTP header.

Unauthenticated responses will return in a HTTP 401 Unauthorized code.

Here's a request example using cURL:

curl -X GET https://api.parsio.io/mailboxes/ -H "X-API-Key: <YOUR_API_KEY>"

How to parse PDFs and files using Parsio API

API Endpont: POST https://api.parsio.io/mailboxes/<mailbox_id>/upload

Parameters:

  • file: Binary file object

  • meta (object): Payload document data (optional)

If needed, you can provide some payload data in the meta field, which will be included in the parsed JSON as the __meta__ field. This can be helpful for linking the document with your external database, for example.

Supported formats: PDF, HTML, CSV, TXT, DOCX, RTF or XML

Max. file size: 20MB

Your Mailbox ID can be found in the browser location bar:

 

Code samples

CURL:

curl \
-X POST \
https://api.parsio.io/mailboxes/<YOUR_MAILBOX_ID>/upload \
-F 'file=@./receipt.pdf' \
-H "X-API-Key: <YOUR_API_KEY>"

PHP:

<?php
 
$apikey = '<API_KEY>';
$url = 'https://api.parsio.io/mailboxes/<MAILBOX_ID>/upload';
$filepath = './invoice.pdf';
 
$curl = curl_init();
 
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'X-API-Key: ' . $apikey
));
curl_setopt($curl, CURLOPT_POST, true);
 
$meta = array(
'foo' => 'bar',
'my_id' => 42,
);
$metaJson = json_encode($meta);
 
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
'file' => curl_file_create($filepath, 'application/pdf', 'invoice.pdf'),
'meta' => $metaJson
));
 
$response = curl_exec($curl);
curl_close($curl);
 
echo $response;

Python:

import requests
 
header = {"X-API-Key": "<API_KEY>"}
url = "https://api.parsio.io/mailboxes/<MAILBOX_ID>/upload"
 
with open('invoice.pdf', 'rb') as f:
files = {'file': f}
with requests.request("POST", url, files=files, headers=header) as response:
print('response: ', response)

Node.js:

const fetch = require("node-fetch");
const fs = require("fs");
const FormData = require("form-data");
 
const APIKEY = "<YOUR_API_KEY>";
const mailboxId = "<MAILBOX_ID>";
const filePath = "/path/to/your/file.pdf";
// Optional: Pass custom payload which will be avalable in the parsed data.
const metadata = { foo: "bar" };
 
async function importFile(mailboxId, filePath, metadata) {
const url = `https://api.parsio.io/mailboxes/${mailboxId}/upload`;
 
const fileStream = fs.createReadStream(filePath);
 
const form = new FormData();
form.append("file", fileStream);
form.append("meta", JSON.stringify(metadata));
 
try {
const response = await fetch(url, {
method: "POST",
body: form,
headers: {
"X-API-Key": APIKEY,
},
});
 
const docId = await response.json();
console.log(response.status);
console.log("Document id:", docId);
} catch (e) {
console.error("Error:", e.message);
}
}
 
importFile(mailboxId, filePath, metadata);


Was this article helpful?
© 2026 Parsio Knowledge Base