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

Raw ↑
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.