Ironclad Webhooks API

Documentation on Ironclad Webhooks.

Operations 6

POST /webhooks Create a Webhook #
GET /webhooks List All Webhooks #
GET /webhooks/{id} Retrieve a Webhook #
PATCH /webhooks/{id} Update a Webhook #
DELETE /webhooks/{id} Delete a Webhook #
GET /webhooks/verification-key Retrieve Webhook Verification Key #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ironclad-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

ironclad-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ironclad Public Webhooks API
  description: Documentation for Ironclad's REST API.
  contact:
    name: Ironclad Support
    email: support@ironcladapp.com
  version: '1'
servers:
- url: https://na1.ironcladapp.com/public/api/v1
  description: Production server
- url: https://eu1.ironcladapp.com/public/api/v1
  description: EU Production server
- url: https://demo.ironcladapp.com/public/api/v1
  description: Demo server
tags:
- name: Webhooks
  description: Documentation on Ironclad Webhooks.
paths:
  /webhooks:
    post:
      summary: Create a Webhook
      description: 'Creates a webhook for the specified events. Send separate requests if you need to create webhooks for multiple target URLs. Each target URL may only have one active registration.


        **OAuth Scope required:** `public.webhooks.createWebhooks`'
      operationId: create-a-webhook
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                events:
                  type: array
                  description: 'The event type(s) to trigger the webhook. Note: you can use `*` to receive events for all events, although we don''t recommend this path, especially for environments with higher volume.'
                  items:
                    $ref: '#/components/schemas/WebhookEvent'
                  minItems: 1
                targetURL:
                  type: string
                  format: https-url
                  description: The URL to send the webhook event payload to. It must be an HTTPS url.
                status:
                  type: string
                  enum:
                  - enabled
                  - disabled
                  default: enabled
                  description: The status of the webhook. If the status is `disabled`, the webhook will not be triggered.
              required:
              - events
              - targetURL
      security:
      - sec0: []
        OAuth2:
        - public.webhooks.createWebhooks
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookModel'
        '400':
          $ref: '#/components/responses/WebhookCreateResponse400'
      tags:
      - Webhooks
    get:
      summary: List All Webhooks
      description: 'View all webhooks associated with a specific company with filtering available via query parameters.


        **OAuth Scope required:** `public.webhooks.readWebhooks`'
      operationId: list-all-webhooks
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/QueryPageNumber'
      - $ref: '#/components/parameters/QueryPageSize'
      security:
      - sec0: []
        OAuth2:
        - public.webhooks.readWebhooks
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                required:
                - page
                - pageSize
                - list
                properties:
                  page:
                    type: integer
                    example: 0
                  pageSize:
                    type: integer
                    example: 20
                  list:
                    type: array
                    items:
                      $ref: '#/components/schemas/WebhookModel'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties: {}
      tags:
      - Webhooks
  /webhooks/{id}:
    get:
      summary: Retrieve a Webhook
      description: 'View the data associated with a specific webhook.


        **OAuth Scope required:** `public.webhooks.readWebhooks`'
      operationId: retrieve-a-webhook
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/WebhookId'
      security:
      - sec0: []
        OAuth2:
        - public.webhooks.readWebhooks
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookModel'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties: {}
      tags:
      - Webhooks
    patch:
      summary: Update a Webhook
      description: 'Update the data associated with a specific webhook.


        **OAuth Scope required:** `public.webhooks.updateWebhooks`'
      operationId: update-a-webhook
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/WebhookId'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                events:
                  type: array
                  description: The type of events that will trigger a notification to the target URL.
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/WebhookEvent'
                targetURL:
                  type: string
                  description: The URL of where the notification gets sent.
                  format: https-url
                status:
                  type: string
                  enum:
                  - enabled
                  - disabled
                  description: The status of the webhook. If the status is `disabled`, the webhook will not be triggered.
      security:
      - sec0: []
        OAuth2:
        - public.webhooks.updateWebhooks
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookModel'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties: {}
      tags:
      - Webhooks
    delete:
      summary: Delete a Webhook
      description: 'Delete a specific webhook.


        **OAuth Scope required:** `public.webhooks.deleteWebhooks`'
      operationId: delete-a-webhook
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      - $ref: '#/components/parameters/WebhookId'
      security:
      - sec0: []
        OAuth2:
        - public.webhooks.deleteWebhooks
      responses:
        '204':
          description: '204'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties: {}
      tags:
      - Webhooks
  /webhooks/verification-key:
    get:
      summary: Retrieve Webhook Verification Key
      description: View the verification key for webhook security implementations
      operationId: retrieve-webhook-verification-key
      parameters:
      - $ref: '#/components/parameters/XAsUserEmail'
      - $ref: '#/components/parameters/XAsUserId'
      security:
      - sec0: []
        OAuth2: []
      responses:
        '200':
          description: '200'
          content:
            text/plain:
              examples:
                Result:
                  value: PEM-FILE
        '400':
          description: '400'
          content:
            application/json:
              examples:
                Result:
                  value: {}
              schema:
                type: object
                properties: {}
      tags:
      - Webhooks
components:
  schemas:
    WebhookInvalidEventTypeBadRequestResponse:
      type: object
      properties:
        code:
          type: string
          example: INVALID_PARAM
        message:
          type: string
          example: invalid event type; *, workflow_launched, workflow_updated, workflow_cancelled, workflow_completed, workflow_approval_status_changed, workflow_attribute_updated, workflow_changed_turn, workflow_comment_reaction_added, workflow_comment_reaction_removed, workflow_comment_added, workflow_comment_removed, workflow_comment_updated, workflow_counterparty_invite_sent, workflow_counterparty_invite_revoked, workflow_documents_added, workflow_documents_removed, workflow_documents_updated, workflow_documents_renamed, workflow_document_edited, workflow_paused, workflow_resumed, workflow_signature_packet_sent, workflow_signature_packet_uploaded, or workflow_signature_packet_cancelled, workflow_signer_added, workflow_signer_removed, workflow_signer_reassigned are acceptable event types
        param:
          type: string
          example: events
    WebhookEvent:
      type: string
      description: Events that can be subscribed to using a webhook.
      example: workflow_launched
      enum:
      - '*'
      - workflow_launched
      - workflow_updated
      - workflow_cancelled
      - workflow_completed
      - workflow_approval_status_changed
      - workflow_attribute_updated
      - workflow_comment_added
      - workflow_comment_removed
      - workflow_comment_updated
      - workflow_comment_reaction_added
      - workflow_comment_reaction_removed
      - workflow_counterparty_invite_sent
      - workflow_counterparty_invite_revoked
      - workflow_documents_added
      - workflow_documents_removed
      - workflow_documents_updated
      - workflow_documents_renamed
      - workflow_document_edited
      - workflow_changed_turn
      - workflow_paused
      - workflow_resumed
      - workflow_signature_packet_cancelled
      - workflow_signature_packet_document_moved
      - workflow_signature_packet_fully_signed
      - workflow_signature_packet_sent
      - workflow_signature_packet_signatures_collected
      - workflow_signature_packet_signer_first_viewed
      - workflow_signature_packet_signer_viewed
      - workflow_signature_packet_uploaded
      - workflow_signer_added
      - workflow_signer_removed
      - workflow_signer_reassigned
      - workflow_step_updated
      - workflow_roles_assigned
      - record_contract_status_changed
    WebhookTargetURLExistsBadRequestResponse:
      type: object
      properties:
        code:
          type: string
          enum:
          - INVALID_PARAM
        message:
          type: string
          example: webhook already exists for event workflow_completed and target [SOME_EXISTING_TARGET_URL]
        param:
          type: string
          example: tagetURL
    WebhookModel:
      description: Webhook object describing the subscribed events and target URL to be called.
      type: object
      required:
      - id
      - events
      - targetURL
      - companyId
      - status
      - consecutiveFailureCount
      properties:
        id:
          description: Unique ID of the webhook
          type: string
          example: 5928719b30182d3700364a74
        events:
          description: Array of events to which webhook is subscribed to.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/WebhookEvent'
        targetURL:
          description: Target URL to which the webhook is called.
          type: string
          format: https-url
          example: https://develop.ironcladapp.com
        companyId:
          description: Unique ID of the Ironclad company instance to which the webhook belongs to.
          type: string
          example: 5928719b30182d3700364a74
        status:
          description: The status of the webhook. If the status is `disabled`, the webhook will not be triggered.
          type: string
          enum:
          - enabled
          - disabled
          - disabledBySystem
          example: enabled
        statusLastUpdatedAt:
          description: The timestamp of the most recent status change in ISO 8601 format.
          type: string
          format: date-time
          example: '2025-01-17T17:51:49.008Z'
        statusLastUpdatedBy:
          description: The user or system ID that made the most recent status change.
          type: string
          example: system
        consecutiveFailureCount:
          description: The number of consecutive failed deliveries of the webhook. After a certain number of consecutive failures over a certain period of time, the webhook will be disabled. See [more](https://developer.ironcladapp.com/reference/webhook-deactivation).
          type: number
          example: 0
        firstConsecutiveFailure:
          description: The timestamp of the first consecutive failure of the webhook in ISO 8601 format.
          type: string
          format: date-time
          example: '2025-01-17T17:51:49.008Z'
  responses:
    WebhookCreateResponse400:
      description: Bad request error when creating webhook.
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/WebhookInvalidEventTypeBadRequestResponse'
            - $ref: '#/components/schemas/WebhookTargetURLExistsBadRequestResponse'
  parameters:
    XAsUserEmail:
      name: x-as-user-email
      in: header
      description: Denotes the actor of the request. When used, the API will take into account this user's permissions and access. This or `x-as-user-id` is required when the associated token was produced from the Client Credentials grant or with legacy bearer tokens on select endpoints. More information about [permissions](https://support.ironcladapp.com/hc/en-us/articles/23063233934999-Ironclad-Permissions-Overview).
      required: false
      schema:
        type: string
        example: jane.doe@test.com
    QueryPageNumber:
      name: page
      in: query
      description: The page number used when paginating through a list of results.
      schema:
        type: integer
        format: int32
        default: 0
        minimum: 0
        maximum: 100000000
    QueryPageSize:
      name: pageSize
      in: query
      description: A limit of the number of results to return.
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 100
        default: 20
    WebhookId:
      name: id
      in: path
      description: The unique identifier of the webhook
      schema:
        type: string
      required: true
    XAsUserId:
      name: x-as-user-id
      in: header
      description: Denotes the actor of the request. When used, the API will take into account this user's permissions and access. This or `x-as-user-email` is required when the associated token was produced from the Client Credentials grant or with legacy bearer tokens on select endpoints. More information about [permissions](https://support.ironcladapp.com/hc/en-us/articles/23063233934999-Ironclad-Permissions-Overview).
      required: false
      schema:
        type: string
        example: 5f0375c4cdc1927a3c5edcd3
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: Authorization
      x-bearer-format: bearer
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://na1.ironcladapp.com/oauth/authorize
          tokenUrl: https://na1.ironcladapp.com/oauth/token
          scopes:
            public.records.createRecords: Create Records
            public.records.readRecords: Read Records
            public.records.updateRecords: Update Records
            public.records.deleteRecords: Delete Records
            public.records.readSchemas: Read Record Schemas
            public.records.createAttachments: Create Record Attachments
            public.records.readAttachments: Read Record Attachments
            public.records.deleteAttachments: Delete Record Attachments
            public.records.createSmartImportRecords: Create Records via Smart Import
            public.records.readSmartImportRecords: Read Record Import Details from Smart Import
            public.records.applyContractAction: Apply Contract Actions
            public.webhooks.createWebhooks: Create Webhooks
            public.webhooks.readWebhooks: Read Webhooks
            public.webhooks.updateWebhooks: Update Webhooks
            public.webhooks.deleteWebhooks: Delete Webhooks
            public.workflows.createWorkflows: Create Workflows
            public.workflows.readWorkflows: Read Workflows
            public.workflows.updateWorkflows: Update Workflows
            public.workflows.readApprovals: Read Workflow Approvals
            public.workflows.updateApprovals: Update Workflow Approvals
            public.workflows.readSignatures: Read Workflow Signatures
            public.workflows.uploadSignedDocuments: Upload Signed Workflow Documents
            public.workflows.readParticipants: Read Workflow Participants
            public.workflows.readRoleAssignees: Read Workflow Role Eligible Assignees
            public.workflows.updateRoleAssignment: Update Workflow Role Assignment
            public.workflows.revertToReview: Revert Workflows to Review
            public.workflows.cancel: Cancel Workflows
            public.workflows.pauseAndResume: Resume and Pause Workflows
            public.workflows.createComments: Create Workflow Comments
            public.workflows.readComments: Read Workflow Comments
            public.workflows.createDocuments: Create Workflow Documents
            public.workflows.readDocuments: Read Workflow Documents
            public.workflows.updateSignaturePacket: Update Signature Packet
            public.workflows.readSchemas: Read Workflow Schemas
            public.workflows.readTurnHistory: Read Workflow Turn History
            public.workflows.readEmailCommunications: Read Workflow Email Communications
            public.workflows.readSignStatus: Read Sign Status
            public.records.createComments: Create Workflow Comments
            public.export.createReports: Create Reports
            public.export.readReports: Read Reports
            public.workflows.createSignatureRecipientUrls: Create Signature Request Recipient URLs
            public.workflows.createEmbeddableSignerUrls: Create Embeddable Signature Request Recipient URLs
            public.workflows.sendSignatureRequests: Send Signature Requests
            public.workflows.cancelSignatureRequests: Cancel Signature Requests
            public.workflows.deleteSigners: Delete Signers
            public.workflows.remindSigners: Remind Signers
            public.workflows.updateSigners: Update Signers
            public.entities.readRelationshipTypes: Read Relationship Types
            public.entities.updateEntities: Update Entities
            public.entities.deleteEntities: Delete Entities
            public.entities.createEntities: Create Entities
            public.entities.readEntities: Read Entities
            public.obligations.readObligations: Read Obligations
            public.obligations.createObligations: Create Obligations
            public.obligations.updateObligations: Update Obligations
            public.obligations.deleteObligations: Delete Obligations
            public.workflows.scheduleSendSignatureRequest: Schedule Send Signature Request
            public.workflows.updateScheduledSignatureRequest: Update Scheduled Signature Request
            public.workflows.deleteScheduledSignatureRequest: Delete Scheduled Signature Request
            public.search.conversational: Run Conversational agent Search
        clientCredentials:
          tokenUrl: https://na1.ironcladapp.com/oauth/token
          scopes:
            public.records.createRecords: Create Records
            public.records.readRecords: Read Records
            public.records.updateRecords: Update Records
            public.records.deleteRecords: Delete Records
            public.records.readSchemas: Read Record Schemas
            public.records.createAttachments: Create Record Attachments
            public.records.readAttachments: Read Record Attachments
            public.records.deleteAttachments: Delete Record Attachments
            public.records.createSmartImportRecords: Create Records via Smart Import
            public.records.readSmartImportRecords: Read Record Import Details from Smart Import
            public.records.applyContractAction: Apply Contract Actions
            public.webhooks.createWebhooks: Create Webhooks
            public.webhooks.readWebhooks: Read Webhooks
            public.webhooks.updateWebhooks: Update Webhooks
            public.webhooks.deleteWebhooks: Delete Webhooks
            public.workflows.createWorkflows: Create Workflows
            public.workflows.readWorkflows: Read Workflows
            public.workflows.updateWorkflows: Update Workflows
            public.workflows.readApprovals: Read Workflow Approvals
            public.workflows.updateApprovals: Update Workflow Approvals
            public.workflows.readSignatures: Read Workflow Signatures
            public.workflows.uploadSignedDocuments: Upload Signed Workflow Documents
            public.workflows.readParticipants: Read Workflow Participants
            public.workflows.readRoleAssignees: Read Workflow Role Eligible Assignees
            public.workflows.updateRoleAssignment: Update Workflow Role Assignment
            public.workflows.revertToReview: Revert Workflows to Review
            public.workflows.cancel: Cancel Workflows
            public.workflows.pauseAndResume: Resume and Pause Workflows
            public.workflows.createComments: Create Workflow Comments
            public.workflows.readComments: Read Workflow Comments
            public.workflows.createDocuments: Create Workflow Documents
            public.workflows.readDocuments: Read Workflow Documents
            public.workflows.updateSignaturePacket: Update Signature Packet
            public.workflows.readSchemas: Read Workflow Schemas
            public.workflows.readTurnHistory: Read Workflow Turn History
            public.workflows.readEmailCommunications: Read Workflow Email Communications
            public.records.createComments: Create Workflow Comments
            public.export.createReports: Create Reports
            public.export.readReports: Read Reports
            public.workflows.createSignatureRecipientUrls: Create Signature Request Recipient URLs
            public.workflows.createEmbeddableSignerUrls: Create Embeddable Signature Request Recipient URLs
            public.workflows.sendSignatureRequests: Send Signature Requests
            public.workflows.cancelSignatureRequests: Cancel Signature Requests
            public.workflows.deleteSigners: Delete Signers
            public.workflows.remindSigners: Remind Signers
            public.workflows.updateSigners: Update Signers
            public.entities.readRelationshipTypes: Read Relationship Types
            public.entities.updateEntities: Update Entities
            public.entities.deleteEntities: Delete Entities
            public.entities.createEntities: Create Entities
            public.entities.readEntities: Read Entities
            public.obligations.readObligations: Read Obligations
            public.obligations.createObligations: Create Obligations
            public.obligations.updateObligations: Update Obligations
            public.obligations.deleteObligations: Delete Obligations
            public.workflows.scheduleSendSignatureRequest: Schedule Send Signature Request
            public.workflows.updateScheduledSignatureRequest: Update Scheduled Signature Request
            public.workflows.deleteScheduledSignatureRequest: Delete Scheduled Signature Request
x-readme:
  headers: []
  explorer-enabled: true
  proxy-enabled: true
  samples-languages:
  - curl
  - node
  - ruby
  - javascript
  - python