Everything you need to send a drawing and receive a PDF on your webhook.
Every request needs your API key as a bearer token in the Authorization header. Find and rotate your key from the dashboard.
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx
/v1/convert
One endpoint handles every tool. Pass a strategy to tell us which operation to run. The request returns immediately with a job id. The finished file is delivered separately to your webhook, not in this response.
| file | binary, required | The document to process. Repeat this field for strategies that accept multiple files, e.g. merge_pdf. |
| strategy | string, required | Which operation to run. See Strategies below. |
| webhook_url | string, optional | Overrides your account's default webhook URL for this request only. |
curl -X POST https://api.anyconvert.app/v1/convert \ -H "Authorization: Bearer sk_live_..." \ -F "file=@site-plan.dwg" \ -F "strategy=dwg_to_pdf" \ -F "webhook_url=https://yourapp.com/webhooks/pdf"
{
"job_id": "job_8f3a2c19",
"strategy": "dwg_to_pdf",
"status": "processing"
}
Every tool runs through the same /v1/convert endpoint; this value just tells us which one.
| dwg_to_pdf | DWG to PDF | From $0.90 / doc |
| pdf_to_word | PDF to Word | From $0.27 / doc |
| merge_pdf | Merge PDF | From $0.18 / doc |
| jpg_to_pdf | JPG to PDF | From $0.14 / doc |
| sign_pdf | Sign PDF | From $0.32 / doc |
| edit_pdf | Edit PDF | From $0.27 / doc |
| compress_pdf | Compress PDF | From $0.14 / doc |
When conversion finishes, we POST the result to your webhook_url (or your account default, set in the dashboard).
POST https://yourapp.com/webhooks/pdf
X-Signature: sha256=8b1a99...
{
"job_id": "job_8f3a2c19",
"status": "completed",
"file_url": "https://files.anyconvert.app/job_8f3a2c19.pdf"
}
On failure, status is "failed" and an error field explains why. The file_url field is omitted.
The X-Signature header is an HMAC-SHA256 of the raw request body, signed with your API secret. Check it before trusting a payload. Respond 200 quickly, and do any slow work after acknowledging receipt.
Retry policy: 3 attempts with exponential backoff over 24 hours.
| 401 | Invalid or missing API key |
| 402 | No credits remaining on your account |
| 413 | File exceeds the 200 MB limit |
| 422 | The file could not be read as a valid DWG |
| 500 | Conversion failed. Retry, or contact support if it persists |
import requests
with open("site-plan.dwg", "rb") as f:
response = requests.post(
"https://api.anyconvert.app/v1/convert",
headers={"Authorization": "Bearer sk_live_..."},
files={"file": f},
data={"strategy": "dwg_to_pdf", "webhook_url": "https://yourapp.com/webhooks/pdf"},
)
print(response.json()) # {"job_id": "...", "strategy": "dwg_to_pdf", "status": "processing"}
const form = new FormData();
form.append("file", fs.createReadStream("site-plan.dwg"));
form.append("strategy", "dwg_to_pdf");
form.append("webhook_url", "https://yourapp.com/webhooks/pdf");
const res = await fetch("https://api.anyconvert.app/v1/convert", {
method: "POST",
headers: { Authorization: "Bearer sk_live_..." },
body: form,
});
console.log(await res.json()); // { job_id: "...", strategy: "dwg_to_pdf", status: "processing" }