PDFThin API
Ladda upp PDF:er, komprimera efter storlek eller kvalitet och hamta resultat via ett REST-API.
Oversikt
Alla uppladdningar anvander multipart/form-data. Svar ar JSON.
- Bas-URL: https://pdfthin.com (eller din SITE_URL).
- Hastighetsgrans: RATE_LIMIT_RPM per IP (standard 60/min).
- Max uppladdning: MAX_UPLOAD_MB (standard 200 MB).
- Filer raderas efter 60 timmar.
- Stodda indata: PDF-fil; valfri vattenmarke PNG/JPG upp till 5MB.
- Uppladdningsvarianter: en fil (optimize/split) eller flera filer (organize).
Serverkonfiguration
Viktiga miljo-variabler som paverkar API-beteendet.
- REDIS_URL: jobbkored och statuslagring.
- S3_ENDPOINT/S3_BUCKET/S3_ACCESS_KEY/S3_SECRET_KEY: objektlagring (valfritt, annars lokalt).
- Filer raderas efter 60 timmar.
- RATE_LIMIT_RPM och DOWNLOAD_TOKEN_TTL_MIN.
Skapa jobb (optimize eller split)
POST /api/jobs med multipart/form-data.
- mode=split ignorerar quality och returnerar delar vid behov.
- Nar quality ar satt ignoreras preset/custom_mb.
- Med quality_mode=smart provar API:t hog till lag kvalitet for att passa storleken.
file
PDF-fil som ska bearbetas.
mode
optimize (standard) eller split.
preset
gmail25 | outlook20 | outlook25 | custom. Obligatoriskt for storleksmal om quality inte ar satt.
custom_mb
Kravs vid preset=custom. Malstorlek i MB.
quality
screen | ebook | printer | prepress eller 1-100. Inte tillatet for split.
quality_mode
Anvand "smart" for att na malstorlek genom att prova kvalitetsnivaer; krav for preset/custom_mb.
watermark
Vattenmarksbild upp till 5MB.
cURL: storlekspreset
curl -X POST https://pdfthin.com/api/jobs -F "[email protected]" -F "preset=gmail25" -F "mode=optimize"
cURL: smart kvalitet (malstorlek)
curl -X POST https://pdfthin.com/api/jobs -F "[email protected]" -F "preset=custom" -F "custom_mb=12" -F "quality_mode=smart" -F "mode=optimize"
cURL: fast kvalitet
curl -X POST https://pdfthin.com/api/jobs -F "[email protected]" -F "quality=printer" -F "mode=optimize"
Skapa jobb (organize)
Anvand mode=organize for att sammanfoga, rotera, ta bort, ordna om och dela sidor.
- Om flera filer laddas upp slas de ihop i uppladdningsordning.
- Minst en operation eller flera filer kravs.
file
En eller flera PDF-filer (flera tillatna).
mode
organize.
rotate_angle
90 | 180 | 270.
rotate_pages
Sidlista som 1,3-5.
delete_pages
Sidor att ta bort, t.ex. 2,4,7-9.
order_pages
Explicit sidordning, t.ex. 3,1,2.
split_after
Dela efter sidor, t.ex. 2,4,7.
watermark
Vattenmarksbild upp till 5MB.
cURL: sammanfoga + rotera
curl -X POST https://pdfthin.com/api/jobs -F "[email protected]" -F "[email protected]" -F "mode=organize" -F "rotate_angle=90" -F "rotate_pages=1-2"
Kontrollera status
GET /api/jobs/{id} returnerar jobstatus och resultatfiler.
- Statusvarden: queued | processing | done | failed.
Exempelsvar
{
"id": "job-id",
"status": "done",
"progress_pct": 100,
"expires_at": "2026-01-22T11:02:51Z",
"result": {
"kind": "single",
"files": [
{
"name": "output.pdf",
"size": 503937,
"download_url": "/api/jobs/job-id/download?index=0"
}
]
}
}
Ladda ner resultat
GET /api/jobs/{id}/download?index=0
- Anvand index=0..n for resultat i flera delar.
- Om den anropas utan token returnerar API:t en omdirigering med kortlivad token.
- Token-TTL: DOWNLOAD_TOKEN_TTL_MIN minuter.
cURL: nedladdning
curl -L "https://pdfthin.com/api/jobs/job-id/download?index=0" -o output.pdf
Ta bort jobb
DELETE /api/jobs/{id} tar bort lagrade filer och status.
- Returnerar 204 No Content.
cURL: ta bort
curl -X DELETE https://pdfthin.com/api/jobs/job-id
Felkoder
Fel anvander JSON: {"error":{"code":"...","message":"..."}}
- ERR_INVALID_FILE
- ERR_TOO_LARGE
- ERR_PASSWORD_PROTECTED
- ERR_CANNOT_FIT_SINGLE_PAGE
- ERR_TIMEOUT
- ERR_INTERNAL
- ERR_NOT_FOUND
- ERR_NOT_READY
- ERR_TOKEN_USED
- ERR_FORBIDDEN
OpenAPI (utkast)
Minimalt OpenAPI 3.0-utdrag for snabb integration.
openapi.yaml
openapi: 3.0.3
info:
title: PDFThin API
version: "1.0"
paths:
/api/jobs:
post:
summary: Create a job
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
mode:
type: string
preset:
type: string
custom_mb:
type: integer
quality:
type: string
quality_mode:
type: string
watermark:
type: string
format: binary
responses:
"202":
description: Accepted
/api/jobs/{id}:
get:
summary: Get job status
parameters:
- in: path
name: id
required: true
schema:
type: string
responses:
"200":
description: OK
delete:
summary: Delete job
parameters:
- in: path
name: id
required: true
schema:
type: string
responses:
"204":
description: No Content
/api/jobs/{id}/download:
get:
summary: Download result
parameters:
- in: path
name: id
required: true
schema:
type: string
- in: query
name: index
schema:
type: integer
responses:
"303":
description: See Other