Pixc · AsyncAPI Specification

Pixc Webhooks

Version

View Spec View on GitHub CompanyShopifyEcommercePhoto EditingImage OptimizationImage ProcessingProduct PhotographyBackground RemovalSEOAutomationAIWebhooksDigital Asset ManagementAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: derived
source: openapi/_original/pixc-public-api-swagger-original.json
docs: https://pixc.com/api/
spec_type: null
asyncapi_published: false
note: >-
  Pixc publishes NO AsyncAPI document — no /asyncapi.yaml on any host, nothing in the Pixc2
  GitHub organization (2 public repos, both Node client libraries), no event-catalog page.
  It does, however, ship webhooks as a first-class REST resource with full CRUD, and the
  published Swagger enumerates the event vocabulary as an enum on WebhookObject.type. That
  catalog is captured here verbatim from the spec and the surface is wired as
  `type: Webhooks`. No AsyncAPI is authored on Pixc's behalf.

transport: http-callback
subscription_model: >-
  A consumer registers a webhook by POSTing url + type to /api/webhook. The registration is
  managed through the same REST API (list, show, update, remove) and carries an `active`
  boolean that can be toggled via PUT /api/webhook/{webhookId}.

events:
- name: order_created
  source: WebhookObject.type enum, openapi/_original/pixc-public-api-swagger-original.json
  description: >-
    Fires when an order is created. Derived from the enum value; Pixc publishes no payload
    schema, delivery semantics or example body for the callback itself.
  payload_schema: null
- name: order_status_updated
  source: WebhookObject.type enum, openapi/_original/pixc-public-api-swagger-original.json
  description: >-
    Fires when an order's status changes. OrderObject.status is an integer in the spec and
    its value vocabulary is not documented.
  payload_schema: null
- name: download_generated
  source: WebhookObject.type enum, openapi/_original/pixc-public-api-swagger-original.json
  description: >-
    Fires when a download becomes available for an order — the completion signal for the
    optimize-photos flow, replacing polling GET /api/order/{orderId}/download.
  payload_schema: null

event_count: 3

management_operations:
- operationId: apiListWebhook
  method: GET
  path: /api/webhook
  scope: 'api:webhook:view'
- operationId: apiAddWebhook
  method: POST
  path: /api/webhook
  scope: 'api:webhook:create'
- operationId: apiShowWebhook
  method: GET
  path: '/api/webhook/{webhookId}'
  scope: 'api:webhook:view'
- operationId: apiUpdateWebhook
  method: PUT
  path: '/api/webhook/{webhookId}'
  scope: 'api:webhook:update'
- operationId: apiRemoveWebhook
  method: DELETE
  path: '/api/webhook/{webhookId}'
  scope: 'api:webhook:remove'

registration:
  endpoint: POST https://dashboard.pixc.com/v1/api/webhook
  content_type: application/x-www-form-urlencoded
  parameters:
  - {name: url, required: true, description: 'URL of webhook. starting with http:// or https://'}
  - {name: type, required: true, description: 'Declared in the spec as formData string with description "url"'}
  note: >-
    The `type` form parameter on POST /api/webhook is declared as an unconstrained string
    whose description reads only "url" — the WebhookObject.type enum
    (order_created / order_status_updated / download_generated) is NOT applied to the
    request parameter. That is a real gap in the published contract: an agent cannot tell
    from the spec which values `type` accepts on create.

gaps:
- no payload schema is published for any of the three events
- no signature, HMAC or verification scheme is documented for inbound callbacks
- no retry, backoff or delivery-guarantee policy is documented
- no delivery-log or replay endpoint exists
- the create-webhook `type` parameter is untyped despite the enum existing on the response object
- http:// is explicitly permitted as a callback scheme