Create a shelf
curl --request POST \
--url https://api.shelv.dev/v1/shelves \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file=@example-file \
--form 'name=<string>'import requests
url = "https://api.shelv.dev/v1/shelves"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = { "name": "<string>" }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('name', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.shelv.dev/v1/shelves', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const form = new FormData();
form.append('file', '<string>');
form.append('name', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.shelv.dev/v1/shelves', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"auditFindings": [
{
"check": "naming",
"message": "<string>",
"severity": "error",
"code": "<string>",
"file": "<string>",
"sourceRef": "<string>"
}
],
"auditStatus": "passed",
"auditSummary": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"currentVersionNumber": 123,
"errorMessage": "<string>",
"failedAtStep": "<string>",
"mimeType": "<string>",
"name": "<string>",
"originalFileName": "<string>",
"pageCount": 123,
"publicId": "<string>",
"quality": {
"fallbackApplied": true,
"granularity": "document",
"mode": "balanced",
"tier": "full"
},
"repairAttempts": 1,
"reviewMode": true,
"status": "uploading",
"storageSizeBytes": 123,
"template": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"userId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}{
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}Shelves
Create a shelf
Upload a PDF document to create a new shelf. Processing runs asynchronously.
POST
/
v1
/
shelves
Create a shelf
curl --request POST \
--url https://api.shelv.dev/v1/shelves \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file=@example-file \
--form 'name=<string>'import requests
url = "https://api.shelv.dev/v1/shelves"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = { "name": "<string>" }
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('name', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.shelv.dev/v1/shelves', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const form = new FormData();
form.append('file', '<string>');
form.append('name', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.shelv.dev/v1/shelves', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"auditFindings": [
{
"check": "naming",
"message": "<string>",
"severity": "error",
"code": "<string>",
"file": "<string>",
"sourceRef": "<string>"
}
],
"auditStatus": "passed",
"auditSummary": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"currentVersionNumber": 123,
"errorMessage": "<string>",
"failedAtStep": "<string>",
"mimeType": "<string>",
"name": "<string>",
"originalFileName": "<string>",
"pageCount": 123,
"publicId": "<string>",
"quality": {
"fallbackApplied": true,
"granularity": "document",
"mode": "balanced",
"tier": "full"
},
"repairAttempts": 1,
"reviewMode": true,
"status": "uploading",
"storageSizeBytes": 123,
"template": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"userId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}{
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
multipart/form-data
PDF file to process (max 300 MB)
Display name for the shelf
Acceptance policy for API uploads. Ignored for dashboard/session uploads.
Available options:
balanced, strict, best_effort Deprecated for API-key uploads. true is rejected because API uploads use straight-through processing.
Available options:
true, false Template to apply for structuring
Available options:
book, legal-contract, charter-party, academic-paper Response
Shelf created, processing started
Show child attributes
Show child attributes
Available options:
passed, repaired, review_required Pattern:
^shf_[0-9a-f]{24}$Show child attributes
Show child attributes
Required range:
x >= 0Available options:
uploading, parsing, structuring, verifying, review, ready, failed 