Hookdeck Integrations API

Configure platform integrations that adapt Hookdeck behavior for specific source platforms — including signature verification, header normalization, allowed event types, and platform-aware retries (e.g., Stripe, GitHub, Twilio, Shopify, Linear).

Hookdeck Integrations API is one of 12 APIs that Hookdeck publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Integrations, Webhooks, and Event Gateways. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 2 Naftiko capability specs.

OpenAPI Specification

hookdeck-integrations-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Hookdeck Integrations API
  version: 1.0.0
  description: Configure platform integrations that adapt Hookdeck behavior for specific source platforms — including signature
    verification, header normalization, and platform-aware retries.
  contact:
    name: Hookdeck Support
    url: https://hookdeck.com/contact-us
    email: [email protected]
servers:
- url: https://api.hookdeck.com/2025-07-01
  description: Production API
security:
- bearerAuth: []
- basicAuth: []
tags:
- name: Integrations
  description: An integration configures platform-specific behaviors, such as signature verification.
paths:
  /integrations:
    get:
      operationId: getIntegrations
      summary: Get integrations
      description: ''
      tags:
      - Integrations
      responses:
        '200':
          description: List of integrations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationPaginatedResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      parameters:
      - in: query
        name: label
        schema:
          type: string
          description: The integration label
      - in: query
        name: provider
        schema:
          $ref: '#/components/schemas/IntegrationProvider'
    post:
      operationId: createIntegration
      summary: Create an integration
      description: ''
      tags:
      - Integrations
      responses:
        '200':
          description: A single integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Integration'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  description: Label of the integration
                configs:
                  anyOf:
                  - $ref: '#/components/schemas/HMACIntegrationConfigs'
                  - $ref: '#/components/schemas/APIKeyIntegrationConfigs'
                  - $ref: '#/components/schemas/HandledAPIKeyIntegrationConfigs'
                  - $ref: '#/components/schemas/HandledHMACConfigs'
                  - $ref: '#/components/schemas/BasicAuthIntegrationConfigs'
                  - $ref: '#/components/schemas/ShopifyIntegrationConfigs'
                  - $ref: '#/components/schemas/VercelLogDrainsIntegrationConfigs'
                  - type: object
                    properties: {}
                    additionalProperties: false
                  description: Decrypted Key/Value object of the associated configuration for that provider
                  x-docs-force-simple-type: true
                  x-docs-type: object
                provider:
                  $ref: '#/components/schemas/IntegrationProvider'
                features:
                  type: array
                  items:
                    $ref: '#/components/schemas/IntegrationFeature'
                  description: List of features to enable (see features list above)
                  x-docs-force-simple-type: true
                  x-docs-type: Array of string
              additionalProperties: false
  /integrations/{id}:
    get:
      operationId: getIntegration
      summary: Get an integration
      description: ''
      tags:
      - Integrations
      responses:
        '200':
          description: A single integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Integration'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: Integration ID
        required: true
    put:
      operationId: updateIntegration
      summary: Update an integration
      description: ''
      tags:
      - Integrations
      responses:
        '200':
          description: A single integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Integration'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: Integration ID
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  description: Label of the integration
                configs:
                  anyOf:
                  - $ref: '#/components/schemas/HMACIntegrationConfigs'
                  - $ref: '#/components/schemas/APIKeyIntegrationConfigs'
                  - $ref: '#/components/schemas/HandledAPIKeyIntegrationConfigs'
                  - $ref: '#/components/schemas/HandledHMACConfigs'
                  - $ref: '#/components/schemas/BasicAuthIntegrationConfigs'
                  - $ref: '#/components/schemas/ShopifyIntegrationConfigs'
                  - $ref: '#/components/schemas/VercelLogDrainsIntegrationConfigs'
                  - type: object
                    properties: {}
                    additionalProperties: false
                  description: Decrypted Key/Value object of the associated configuration for that provider
                  x-docs-force-simple-type: true
                  x-docs-type: object
                provider:
                  $ref: '#/components/schemas/IntegrationProvider'
                features:
                  type: array
                  items:
                    $ref: '#/components/schemas/IntegrationFeature'
                  description: List of features to enable (see features list above)
                  x-docs-force-simple-type: true
                  x-docs-type: Array of string
              additionalProperties: false
    delete:
      operationId: deleteIntegration
      summary: Delete an integration
      description: ''
      tags:
      - Integrations
      responses:
        '200':
          description: An object with deleted integration id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletedIntegration'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: Integration ID
        required: true
  /integrations/{id}/attach/{source_id}:
    put:
      operationId: attachIntegrationToSource
      summary: Attach an integration to a source
      description: ''
      tags:
      - Integrations
      responses:
        '200':
          description: Attach operation success status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachedIntegrationToSource'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: Integration ID
        required: true
      - in: path
        name: source_id
        schema:
          type: string
          description: Source ID
        required: true
  /integrations/{id}/detach/{source_id}:
    put:
      operationId: detachIntegrationToSource
      summary: Detach an integration from a source
      description: ''
      tags:
      - Integrations
      responses:
        '200':
          description: Detach operation success status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DetachedIntegrationFromSource'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      parameters:
      - in: path
        name: id
        schema:
          type: string
          description: Integration ID
        required: true
      - in: path
        name: source_id
        schema:
          type: string
          description: Source ID
        required: true
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    basicAuth:
      type: http
      scheme: basic
  schemas:
    DetachedIntegrationFromSource:
      type: object
      properties: {}
      additionalProperties: false
    OrderByDirection:
      anyOf:
      - enum:
        - asc
      - enum:
        - desc
      - enum:
        - ASC
      - enum:
        - DESC
    IntegrationFeature:
      type: string
      enum:
      - VERIFICATION
      - HANDSHAKE
    IntegrationPaginatedResult:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/SeekPagination'
        count:
          type: integer
        models:
          type: array
          items:
            $ref: '#/components/schemas/Integration'
      additionalProperties: false
    ShopifyIntegrationConfigs:
      type: object
      properties:
        webhook_secret_key:
          type: string
      required:
      - webhook_secret_key
      additionalProperties: false
    APIKeyIntegrationConfigs:
      type: object
      properties:
        header_key:
          type: string
        api_key:
          type: string
      required:
      - header_key
      - api_key
      additionalProperties: false
    DeletedIntegration:
      type: object
      properties:
        id:
          type: string
      required:
      - id
      additionalProperties: false
    VercelLogDrainsIntegrationConfigs:
      type: object
      properties:
        webhook_secret_key:
          type: string
          nullable: true
        vercel_log_drains_secret:
          type: string
      required:
      - vercel_log_drains_secret
      additionalProperties: false
    AttachedIntegrationToSource:
      type: object
      properties:
        success:
          type: boolean
      required:
      - success
      additionalProperties: false
    SeekPagination:
      type: object
      properties:
        order_by:
          anyOf:
          - type: string
          - type: array
            items:
              type: string
        dir:
          anyOf:
          - $ref: '#/components/schemas/OrderByDirection'
          - type: array
            items:
              $ref: '#/components/schemas/OrderByDirection'
        limit:
          type: integer
        prev:
          type: string
        next:
          type: string
      additionalProperties: false
    BasicAuthIntegrationConfigs:
      type: object
      properties:
        username:
          type: string
        password:
          type: string
      required:
      - username
      - password
      additionalProperties: false
    HMACAlgorithms:
      type: string
      enum:
      - md5
      - sha1
      - sha256
      - sha512
    IntegrationProvider:
      type: string
      enum:
      - AIPRISE
      - ALCHEMY
      - DOCUSIGN
      - INTERCOM
      - HMAC
      - BASIC_AUTH
      - API_KEY
      - MANAGED
      - HOOKDECK_OUTPOST
      - SANITY
      - BIGCOMMERCE
      - CLAUDE
      - OPENAI
      - POLAR
      - BRIDGE_XYZ
      - BRIDGE_API
      - CHARGEBEE_BILLING
      - CHAINDOTS
      - CLOUDSIGNAL
      - COINBASE
      - COURIER
      - CURSOR
      - MERAKI
      - FIREBLOCKS
      - FRONTAPP
      - ZOOM
      - TWITTER
      - RECHARGE
      - RECURLY
      - REVOLUT
      - RING_CENTRAL
      - STRIPE
      - PROPERTY-FINDER
      - QUOTER
      - SHOPIFY
      - TWILIO
      - GITHUB
      - POSTMARK
      - TALLY
      - TYPEFORM
      - PICQER
      - XERO
      - SVIX
      - RESEND
      - GEMINI
      - ADYEN
      - AKENEO
      - GITLAB
      - WOOCOMMERCE
      - OKTA
      - OURA
      - COMMERCELAYER
      - HUBSPOT
      - MAILGUN
      - PERSONA
      - PIPEDRIVE
      - SENDGRID
      - WORKOS
      - SYNCTERA
      - AWS_SNS
      - THREE_D_EYE
      - TWITCH
      - ENODE
      - FAUNDIT
      - FAVRO
      - LINEAR
      - SHIPBOB
      - SHIPHERO
      - SHOPLINE
      - WIX
      - NMI
      - NEON
      - ORB
      - PYLON
      - RAZORPAY
      - REPAY
      - SQUARE
      - SOLIDGATE
      - TRELLO
      - EBAY
      - TELNYX
      - DISCORD
      - TOKENIO
      - FISERV
      - FUSIONAUTH
      - BONDSMITH
      - VERCEL_LOG_DRAINS
      - VERCEL
      - TEBEX
      - SLACK
      - SMARTCAR
      - MAILCHIMP
      - NUVEMSHOP
      - PADDLE
      - PAYPAL
      - PAYMOB
      - PAYSTACK
      - SCRAPFLY
      - PORTAL
      - TREEZOR
      - PRAXIS
      - CUSTOMERIO
      - EXACT_ONLINE
      - FACEBOOK
      - WHATSAPP
      - REPLICATE
      - TIKTOK
      - TIKTOK_SHOP
      - AIRWALLEX
      - ASCEND
      - ALIPAY
      - ZENDESK
      - UPOLLO
      - SMILE
      - NYLAS
      - CLIO
      - GOCARDLESS
      - LINKEDIN
      - LITHIC
      - UTILA
      - GREENDOT
      - ZEROHASH
      - AIRTABLE
      - ASANA
      - ASHBY
      - FASTSPRING
      - PAYPRO_GLOBAL
      - USPS
      - WALMART
      - FIREFLIES
      - FLEXPORT
      - UBER
      - WECHAT
      - CIRCLE
    HandledHMACConfigs:
      type: object
      properties:
        webhook_secret_key:
          type: string
      required:
      - webhook_secret_key
      additionalProperties: false
    HandledAPIKeyIntegrationConfigs:
      type: object
      properties:
        api_key:
          type: string
      required:
      - api_key
      additionalProperties: false
    HMACIntegrationConfigs:
      type: object
      properties:
        webhook_secret_key:
          type: string
        algorithm:
          $ref: '#/components/schemas/HMACAlgorithms'
        header_key:
          type: string
        encoding:
          type: string
          enum:
          - base64
          - hex
      required:
      - webhook_secret_key
      - algorithm
      - header_key
      - encoding
      additionalProperties: false
    Integration:
      type: object
      properties:
        id:
          type: string
          description: ID of the integration
        team_id:
          type: string
          description: ID of the project
        label:
          type: string
          description: Label of the integration
        provider:
          $ref: '#/components/schemas/IntegrationProvider'
        features:
          type: array
          items:
            $ref: '#/components/schemas/IntegrationFeature'
          description: List of features to enable (see features list below)
          x-docs-force-simple-type: true
          x-docs-type: Array of string
        configs:
          anyOf:
          - $ref: '#/components/schemas/HMACIntegrationConfigs'
          - $ref: '#/components/schemas/APIKeyIntegrationConfigs'
          - $ref: '#/components/schemas/HandledAPIKeyIntegrationConfigs'
          - $ref: '#/components/schemas/HandledHMACConfigs'
          - $ref: '#/components/schemas/BasicAuthIntegrationConfigs'
          - $ref: '#/components/schemas/ShopifyIntegrationConfigs'
          - $ref: '#/components/schemas/VercelLogDrainsIntegrationConfigs'
          - type: object
            properties: {}
            additionalProperties: false
          description: Decrypted Key/Value object of the associated configuration for that provider
          x-docs-force-simple-type: true
          x-docs-type: object
        sources:
          type: array
          items:
            type: string
            description: ID of the source
          description: List of source IDs the integration is attached to
        updated_at:
          type: string
          format: date-time
          description: Date the integration was last updated
        created_at:
          type: string
          format: date-time
          description: Date the integration was created
      required:
      - id
      - team_id
      - label
      - provider
      - features
      - configs
      - sources
      - updated_at
      - created_at
      additionalProperties: false
    APIErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Error code
        status:
          type: number
          format: float
          description: Status code
        message:
          type: string
          description: Error description
        data:
          type: object
          properties: {}
          nullable: true
      required:
      - code
      - status
      - message
      additionalProperties: false
      description: Error response model