> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pictify.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook Subscriptions

> Manage webhook subscriptions via API

# Webhook Subscriptions

Manage webhook subscriptions programmatically. Webhooks notify your server when events occur in your Pictify account.

<Note>
  For webhook payload formats and signature verification, see [Webhooks Concept](/concepts/webhooks).
</Note>

## Endpoints

| Method   | Endpoint                       | Description                                                     |
| -------- | ------------------------------ | --------------------------------------------------------------- |
| `GET`    | `/webhook-subscriptions`       | [List subscriptions](/api-reference/endpoints/webhooks/list)    |
| `POST`   | `/webhook-subscriptions`       | [Create subscription](/api-reference/endpoints/webhooks/create) |
| `GET`    | `/webhook-subscriptions/{uid}` | [Get subscription](/api-reference/endpoints/webhooks/get)       |
| `PUT`    | `/webhook-subscriptions/{uid}` | [Update subscription](/api-reference/endpoints/webhooks/update) |
| `DELETE` | `/webhook-subscriptions/{uid}` | [Delete subscription](/api-reference/endpoints/webhooks/delete) |

<Warning>
  The `secret` is only returned when creating a subscription. Store it securely for signature verification.
</Warning>

## Supported Events

| Event              | Description                                     |
| ------------------ | ----------------------------------------------- |
| `render.completed` | Image, GIF, or PDF render finished successfully |
| `render.failed`    | Render failed with an error                     |
| `binding.updated`  | Binding data refreshed                          |
| `binding.failed`   | Binding data fetch failed                       |

## Filters

Filter webhooks to only receive specific events by template or render type:

```json theme={null}
{
  "filters": {
    "templateId": "tmpl_abc123",
    "type": "image"
  }
}
```

## Subscription Status

| Status   | Description                               |
| -------- | ----------------------------------------- |
| `active` | Receiving webhooks                        |
| `paused` | Temporarily disabled                      |
| `failed` | Disabled after repeated delivery failures |

## Delivery Information

The `lastDelivery` field on a subscription shows the most recent delivery attempt, including `status`, `timestamp`, `responseCode`, and retry information for failures.


## OpenAPI

````yaml get /webhook-subscriptions
openapi: 3.1.0
info:
  title: Pictify API
  version: 1.0.0
  description: |
    Generate images, GIFs, and PDFs from HTML templates programmatically.

    ## Authentication
    All API requests require a Bearer token in the Authorization header:
    ```
    Authorization: Bearer pk_live_your_api_key
    ```

    ## Rate Limits
    - Free: 60 requests/minute
    - Pro: 300 requests/minute
    - Business: 1,000 requests/minute

    Rate limit headers are included in all responses.
  contact:
    email: support@pictify.io
    url: https://pictify.io
  license:
    name: MIT
servers:
  - url: https://api.pictify.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Images
    description: Image generation endpoints
  - name: GIFs
    description: GIF generation and capture
  - name: PDFs
    description: PDF generation
  - name: Templates
    description: Template management
  - name: Batch
    description: Batch rendering operations
  - name: Experiments
    description: A/B testing, smart links, and scheduled variant experiments
  - name: Webhooks
    description: Webhook subscription management
  - name: Bindings
    description: Data binding for auto-rendering
paths:
  /webhook-subscriptions:
    get:
      tags:
        - Webhooks
      summary: List webhook subscriptions
      operationId: listWebhookSubscriptions
      parameters:
        - name: event
          in: query
          schema:
            type: string
        - name: status
          in: query
          schema:
            type: string
            enum:
              - active
              - paused
              - failed
        - name: page
          in: query
          schema:
            type: integer
            default: 1
        - name: limit
          in: query
          schema:
            type: integer
            default: 20
      responses:
        '200':
          description: List of subscriptions
          content:
            application/json:
              schema:
                type: object
                properties:
                  subscriptions:
                    type: array
                    items:
                      $ref: '#/components/schemas/WebhookSubscription'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
components:
  schemas:
    WebhookSubscription:
      type: object
      properties:
        uid:
          type: string
        event:
          type: string
          enum:
            - render.completed
            - render.failed
            - binding.updated
            - binding.failed
        targetUrl:
          type: string
          format: uri
        platform:
          type: string
          enum:
            - zapier
            - make
            - n8n
            - pipedream
            - custom
        status:
          type: string
          enum:
            - active
            - paused
            - failed
        filters:
          type: object
          properties:
            templateId:
              type: string
            bindingId:
              type: string
        deliveryCount:
          type: integer
        failureCount:
          type: integer
        lastDeliveryAt:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
    Pagination:
      type: object
      properties:
        page:
          type: integer
        limit:
          type: integer
        total:
          type: integer
        totalPages:
          type: integer
        hasNext:
          type: boolean
        hasPrev:
          type: boolean
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key obtained from the Pictify dashboard

````