APIFreaks - API Hub for Developers · AsyncAPI Specification
Apifreaks Api Hub For Developers Pdf Webhooks
Version
View Spec
View on GitHub
IP intelligencegeolocationWHOISdomain intelligenceDNSgeocodingemail validationphone validationSSLweb scrapingscreenshotsPDF processingcurrencyforexcommoditiesfinancial validationZIP codesweathertimezoneGeoDBuser-agent parsingastronomydeveloper toolsMCPagent-readyOCRAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-09'
method: derived
spec_type: Webhooks
asyncapi_published: false
source: openapi/ (18 PDF operations declaring webhook_url / webhook_failure_notification / X-Webhook-Authorization)
docs: https://apifreaks.com/api/merge-pdf
summary: >-
APIFreaks has exactly one event surface, and it is outbound webhooks on the asynchronous PDF pipeline.
Every long-running PDF operation returns a taskId immediately and will POST a completion notification to a
caller-supplied webhook_url. There is no streaming API, no event bus, no subscription management endpoint,
and no published AsyncAPI document — the whole contract lives as three query/header parameters repeated
across 18 operations in the OpenAPI. The rest of the platform (IP, WHOIS, DNS, currency, weather, GeoDB,
validation) is synchronous request/response only and has no event surface at all.
model:
style: caller-supplied-url
direction: outbound
subscription: per-request
registration_endpoint: null
notes: >-
There is no webhook-registration API and no dashboard endpoint catalog. The destination URL is passed on
the request that starts the task, so each task carries its own callback.
parameters:
- name: webhook_url
in: query
type: string
required: false
description: The URL to which the webhook notification will be sent after the task is completed.
- name: webhook_failure_notification
in: query
type: boolean
required: false
description: >-
If true, an email notification is also sent when the webhook request fails all retries. The email goes
to the requesting user, or to their organization's admin if they belong to one.
- name: X-Webhook-Authorization
in: header
type: string
required: false
description: >-
Optional custom header forwarded on the webhook call. Format `Key:Value`
(e.g. `Authorization:Bearer <token>`).
delivery:
retries: true
retry_policy_published: false
failure_fallback: email notification (opt-in via webhook_failure_notification)
signature_scheme: null
signature_note: >-
No HMAC signature, no timestamp, no replay-protection header is documented. Receiver-side
authentication is delegated entirely to whatever static value the caller puts in X-Webhook-Authorization,
which is a shared secret echoed on every call rather than a per-payload signature.
producers:
- {operationId: mergePdf, http: 'POST /v1.0/pdf/merge', spec: apifreaks-api-hub-for-developers-merge-pdf-openapi.json}
- {operationId: splitPdf, http: 'POST /v1.0/pdf/split', spec: apifreaks-api-hub-for-developers-pdf-split-pages-openapi.json}
- {operationId: extractPdfPages, http: 'POST /v1.0/pdf/extract-pages', spec: apifreaks-api-hub-for-developers-pdf-extract-pages-openapi.json}
- {operationId: deletePdfPage, http: 'POST /v1.0/pdf/remove-pages', spec: apifreaks-api-hub-for-developers-delete-pdf-page-openapi.json}
- {operationId: rotatePdfPages, http: 'POST /v1.0/pdf/rotate', spec: apifreaks-api-hub-for-developers-rotate-pdf-pages-openapi.json}
- {operationId: compressPdf, http: 'POST /v1.0/pdf/compress', spec: apifreaks-api-hub-for-developers-pdf-compress-openapi.json}
- {operationId: linearizePdf, http: 'POST /v1.0/pdf/linearize', spec: apifreaks-api-hub-for-developers-linearize-pdf-openapi.json}
- {operationId: encryptPdf, http: 'POST /v1.0/pdf/encrypt', spec: apifreaks-api-hub-for-developers-pdf-encrypt-openapi.json}
- {operationId: decryptPdf, http: 'POST /v1.0/pdf/decrypt', spec: apifreaks-api-hub-for-developers-pdf-decrypt-openapi.json}
- {operationId: restrictPdf, http: 'POST /v1.0/pdf/restrict', spec: apifreaks-api-hub-for-developers-pdf-restrict-openapi.json}
- {operationId: unrestrictPdf, http: 'POST /v1.0/pdf/unrestrict', spec: apifreaks-api-hub-for-developers-pdf-unrestrict-openapi.json}
- {operationId: pdfToImage, http: 'POST /v1.0/pdf/png', spec: apifreaks-api-hub-for-developers-pdf-to-image-openapi.json}
- {operationId: null, http: 'POST /v1.0/pdf/jpg', spec: apifreaks-api-hub-for-developers-pdf-to-image-openapi.json, note: no operationId in the published spec}
- {operationId: null, http: 'POST /v1.0/pdf/tif', spec: apifreaks-api-hub-for-developers-pdf-to-image-openapi.json, note: no operationId in the published spec}
- {operationId: null, http: 'POST /v1.0/pdf/bmp', spec: apifreaks-api-hub-for-developers-pdf-to-image-openapi.json, note: no operationId in the published spec}
- {operationId: null, http: 'POST /v1.0/pdf/gif', spec: apifreaks-api-hub-for-developers-pdf-to-image-openapi.json, note: no operationId in the published spec}
polling_alternative:
operationId: getTaskStatus
http: 'GET /v1.0/pdf/task-status'
spec: apifreaks-api-hub-for-developers-pdf-task-status-openapi.json
states: [completed, failed]
payload_shape:
source: components.schemas.TaskStatusResponse (published example)
fields: [taskId, status, createdAt, outputUrls, outputIds, inputIds, expiresAt, error, message]
retention: >-
The published example shows expiresAt exactly 7 days after createdAt, i.e. generated output resources
are retained for one week.
gaps:
- >-
No AsyncAPI document is published for the webhook surface, so the event payload has no machine-readable
schema of its own. The closest thing is the TaskStatusResponse schema on the polling endpoint; whether
the webhook body is identical is not documented.
- >-
No webhook signature scheme. A receiver cannot verify that a completion callback came from APIFreaks
other than by checking a static header it supplied itself.
- >-
No published retry schedule or maximum attempt count, only "all the retries" in the parameter
description.