Developers

EditMyPDF API Docs

Read draft EditMyPDF API documentation for upload, AI edit, OCR, conversion, compression, retention, and webhooks.

Last updated July 7, 2026

Trust Center

Publishing note: Use this page as a draft for API plans, private beta, or developer access. If the API is not publicly available yet, publish this page as "API private beta" or "API waitlist" instead of promising live access.

The EditMyPDF API is intended for developers who want to automate PDF editing, conversion, OCR, compression, metadata, split, merge, or AI-assisted document workflows inside their own applications.

This documentation is a product-ready draft. Update endpoint names, authentication, limits, pricing, and examples to match the production API before publishing.

API status

Current suggested status:

Private beta / by invitation

To request access, contact:

contact@editmypdf.ai

Include your company name, use case, expected monthly volume, file types, security requirements, preferred region, and whether you need a Data Processing Agreement.

Typical use cases

The API may be useful for:

  • automated PDF conversion;
  • OCR for scanned documents;
  • AI-assisted rewriting or translation workflows;
  • document cleanup;
  • metadata removal;
  • PDF compression;
  • splitting and merging files;
  • batch processing;
  • internal business workflows;
  • SaaS integrations;
  • document intake pipelines.

Base URL

Example base URL:

https://api.editmypdf.ai/v1

Replace this before publishing if your production API uses a different host or path.

Authentication

API requests should use bearer-token authentication:

Authorization: Bearer YOUR_API_KEY

Do not expose API keys in browser-side code. Store keys on your server and rotate them if you suspect they have been compromised.

Content type

JSON endpoints should use:

Content-Type: application/json

File upload endpoints may use pre-signed upload URLs or multipart upload, depending on implementation.

Suggested workflow

A standard API workflow can be designed like this:

  1. Create an upload.
  2. Upload the source file.
  3. Create a processing job.
  4. Poll the job status or receive a webhook.
  5. Download the result.
  6. Delete the source file or let retention rules expire it.

Create an upload

POST /files

Example request:

{ "filename": "contract.pdf", "content_type": "application/pdf", "size_bytes": 2489312 }

Example response:

{ "file_id": "file_abc123", "upload_url": "https://example-upload-url", "expires_at": "2026-07-07T12:30:00Z" }

Upload the file

Upload the file to the returned upload URL using the method required by your implementation.

Example:

curl -X PUT "UPLOAD_URL" \ -H "Content-Type: application/pdf" \ --data-binary @contract.pdf

Create an AI edit job

POST /jobs/ai-edit

Example request:

{ "file_id": "file_abc123", "instruction": "Rewrite the first paragraph to sound more professional while keeping the same meaning.", "output_format": "pdf" }

Example response:

{ "job_id": "job_abc123", "status": "queued" }

Create an OCR job

POST /jobs/ocr

Example request:

{ "file_id": "file_abc123", "languages": ["eng", "fra"], "output_format": "searchable_pdf" }

Create a conversion job

POST /jobs/convert

Example request:

{ "file_id": "file_abc123", "target_format": "docx" }

Supported target formats may include pdf, docx, txt, html, jpg, png, or others depending on the production route.

Create a compression job

POST /jobs/compress

Example request:

{ "file_id": "file_abc123", "quality": "balanced" }

Suggested quality values:

ValueDescription
highSmaller reduction, better visual quality
balancedGeneral-purpose compression
maximumStronger compression, higher risk of visible quality loss

Create a metadata job

POST /jobs/metadata

Example request:

{ "file_id": "file_abc123", "action": "remove" }

Check job status

GET /jobs/{job_id}

Example response:

{ "job_id": "job_abc123", "status": "succeeded", "created_at": "2026-07-07T12:00:00Z", "completed_at": "2026-07-07T12:01:30Z", "result_file_id": "file_result_abc123" }

Suggested job statuses:

StatusMeaning
queuedJob accepted and waiting to start
runningJob is being processed
succeededJob completed successfully
failedJob failed
cancelledJob was cancelled
expiredJob or result is no longer available

Download result

GET /files/{file_id}/download

Example response:

{ "download_url": "https://example-download-url", "expires_at": "2026-07-07T13:00:00Z" }

Delete a file

DELETE /files/{file_id}

Example response:

{ "file_id": "file_abc123", "deleted": true }

Webhooks

For asynchronous processing, webhooks can notify your server when a job changes state.

Suggested event types:

EventDescription
job.queuedJob was accepted
job.runningJob started processing
job.succeededJob completed successfully
job.failedJob failed
job.cancelledJob was cancelled
file.expiredA file or output is no longer available

Example webhook payload:

{ "event": "job.succeeded", "job_id": "job_abc123", "result_file_id": "file_result_abc123", "created_at": "2026-07-07T12:01:31Z" }

Verify webhook signatures before trusting webhook payloads.

Error format

Suggested error response:

{ "error": { "code": "file_too_large", "message": "The uploaded file exceeds the limit for this plan.", "request_id": "req_abc123" } }

Common error codes:

CodeMeaning
unauthorizedMissing or invalid API key
forbiddenAPI key does not have access to this action
file_too_largeFile exceeds plan or endpoint limit
unsupported_file_typeFile type is not supported by the selected endpoint
invalid_instructionAI edit instruction is missing or invalid
rate_limitedToo many requests
job_failedProcessing failed
expiredFile, upload, or result expired

Rate limits

Suggested placeholders before launch:

PlanRequests per minuteConcurrent jobsMax file size
Private betaTo be confirmedTo be confirmedTo be confirmed
BusinessTo be confirmedTo be confirmedTo be confirmed
EnterpriseCustomCustomCustom

Retention and deletion

API files and outputs should follow the same general retention philosophy as the main product unless a separate enterprise agreement says otherwise.

Suggested default alignment:

  • temporary upload URLs expire quickly;
  • submitted run content is retained for a limited window after terminal state;
  • minimal metadata may be retained for reliability, abuse prevention, finance reconciliation, and debugging;
  • billing and legal records may have longer retention where required by law;
  • customers can request earlier deletion where supported.

EditMyPDF should not be used as the only archive or backup of customer documents.

Responsible API use

Do not use the API to create fake, fraudulent, deceptive, or unlawful documents. Do not use it to falsify official, financial, academic, employment, identity, government, medical, insurance, tax, legal, or evidentiary records.

Customers are responsible for:

  • having the right to process uploaded files;
  • providing any required notices or consents;
  • reviewing outputs before relying on them;
  • complying with privacy, security, intellectual property, and sector-specific rules;
  • preventing end-user misuse in their own products.

Security requirements for API users

API users should:

  • keep API keys secret;
  • use server-side calls only;
  • rotate keys periodically;
  • validate webhook signatures;
  • avoid logging sensitive document content;
  • process only the files necessary for the task;
  • delete files when no longer needed;
  • monitor for abuse in their own application;
  • contact EditMyPDF if credentials are compromised.

Example cURL request

curl -X POST "https://api.editmypdf.ai/v1/jobs/ai-edit" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "file_id": "file_abc123", "instruction": "Translate page 1 into French and keep the layout readable.", "output_format": "pdf" }'

Example Python request

import requests API_KEY = "YOUR_API_KEY" BASE_URL = "https://api.editmypdf.ai/v1" response = requests.post( f"{BASE_URL}/jobs/ai-edit", headers={ "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", }, json={ "file_id": "file_abc123", "instruction": "Rewrite the introduction in a more professional tone.", "output_format": "pdf", }, timeout=60, ) response.raise_for_status() print(response.json())

Request access

To request API access, contact:

contact@editmypdf.ai

Include:

  • company name;
  • website;
  • intended use case;
  • expected monthly volume;
  • file types and average file size;
  • security and DPA requirements;
  • preferred processing region;
  • whether you need webhooks, batch processing, or custom limits.

FAQ

Is the EditMyPDF API public?

This page is written as private-beta or draft API documentation. If public API access is not yet available, publish it as an API waitlist or private-beta page.

Can I use the API from browser JavaScript?

Do not expose API keys in browser-side code. API keys should be stored and used on your server.

Does the API keep files forever?

No. API retention should follow the same limited-retention philosophy as the main product unless a separate enterprise agreement says otherwise.

Can the API be used for automated document fraud?

No. Fraudulent, deceptive, or unlawful document editing is prohibited.

EditMyPDF API Docs | EditMyPDF