Signeasy Webhooks API

Subscribe an HTTP endpoint to signature-request lifecycle events - rs.initiated, rs.link_sent, rs.viewed, rs.signed, rs.completed, rs.declined, rs.reminded, rs.expired, rs.voided, and document.signed. Signeasy POSTs an asynchronous payload (with event_user and metadata token) to your URL, retrying failures with exponential backoff over 24 hours. Subscriptions are configured in the developer portal.

OpenAPI Specification

signeasy-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Signeasy API
  version: '3.0'
  description: >-
    RESTful eSignature API (v3) for the Signeasy contract and signature platform.
    Send documents for signature (envelopes), embed signing and sending inside your
    own app via iframes, manage reusable templates with merge fields, upload original
    documents, fetch the authenticated user, and receive signature lifecycle events
    via webhooks.


    Confirmed endpoints (paths and methods) were extracted from the OpenAPI
    fragments embedded in the public Signeasy API reference at docs.signeasy.com.
    A small number of endpoints (marked with x-modeled: true) are modeled from the
    guides and the envelope object documentation where the public reference does not
    embed a machine-readable definition; verify these against the developer portal.


    All requests use the base URL https://api.signeasy.com/v3 and are authenticated
    with an OAuth 2.0 Bearer access token (sandbox or live).
  contact:
    name: Signeasy API Support
    url: https://docs.signeasy.com/support
  license:
    name: Proprietary
    url: https://signeasy.com/terms-of-service
servers:
- url: https://api.signeasy.com/v3
  description: Signeasy API v3 (sandbox and live tokens use the same host)
security:
- bearerAuth: []
tags:
- name: Envelopes
  description: Signature requests composed of originals and templates.
- name: Originals
  description: Master documents used to build signature requests.
- name: Templates
  description: Reusable documents with predefined roles and merge fields.
- name: Embedded
  description: Embedded signing and sending flows for iframes and pop-ups.
- name: Users
  description: Authenticated account details and envelope credits.
paths:
  /rs/envelope/:
    post:
      operationId: createEnvelope
      tags:
      - Envelopes
      summary: Create or send an envelope
      description: >-
        Send a signature request containing one or more original documents and/or
        templates to up to 45 recipients. Set embedded_signing to true to create an
        embedded request (no emails sent by Signeasy) and generate signing URLs
        yourself.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                originals:
                  type: array
                  description: Original document IDs to include in the envelope.
                  items:
                    type: object
                templates:
                  type: array
                  description: Template IDs to include in the envelope.
                  items:
                    type: object
                recipients:
                  type: array
                  description: Recipients (signers) of the envelope, up to 45.
                  items:
                    type: object
                embedded_signing:
                  type: boolean
                  description: When true, creates an embedded signature request; Signeasy sends no recipient emails.
                message:
                  type: string
                expiry:
                  type: integer
                  description: Days until the signature request expires.
      responses:
        '200':
          description: Envelope created. Returns the pending file (envelope) id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '401':
          description: Missing or invalid access token.
  /rs/envelope/{pending_file_id}:
    get:
      operationId: getEnvelope
      x-modeled: true
      tags:
      - Envelopes
      summary: Retrieve the envelope object
      description: >-
        Fetch a signature request (pending file / envelope) and its status. Status is
        one of incomplete, complete, recipient_declined, or canceled; each recipient
        carries a status of viewed, not_viewed, declined, or finalized. Path modeled
        from the envelope object documentation.
      parameters:
      - name: pending_file_id
        in: path
        required: true
        schema:
          type: integer
        description: The pending file (envelope) id returned when the envelope was created.
      responses:
        '200':
          description: The envelope object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '404':
          description: Envelope not found.
  /rs/envelope/{pending_file_id}/cancel:
    post:
      operationId: cancelEnvelope
      tags:
      - Envelopes
      summary: Cancel (void) an envelope signature request
      parameters:
      - name: pending_file_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Signature request canceled.
        '404':
          description: Envelope not found.
  /rs/{rs_id}/cancel:
    post:
      operationId: cancelSignatureRequest
      tags:
      - Envelopes
      summary: Cancel a signature request
      description: Cancel a signature request by its request id (legacy single-document flow).
      parameters:
      - name: rs_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Signature request canceled.
  /rs/envelope/signed/{signed_id}/{source_id}/download:
    get:
      operationId: downloadSignedFile
      tags:
      - Envelopes
      summary: Download a signed file within an envelope as PDF
      parameters:
      - name: signed_id
        in: path
        required: true
        schema:
          type: integer
      - name: source_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: The signed document as a PDF.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
  /original/:
    post:
      operationId: uploadOriginal
      tags:
      - Originals
      summary: Upload an original
      description: Upload a master document (up to 40 MB) that can be used to send signature requests.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: Original uploaded. Returns the original document id.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
  /template/{template_id}:
    put:
      operationId: updateTemplate
      tags:
      - Templates
      summary: Update template
      parameters:
      - name: template_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Template updated.
  /template/{template_id}/embed:
    post:
      operationId: fetchEmbeddedTemplateCreateUrl
      tags:
      - Templates
      summary: Fetch embedded template create URL
      description: >-
        Get the embedded template-creation link for a template. Load this URL in an
        iframe so users can create or update templates inside your own app.
      parameters:
      - name: template_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Embedded template URL.
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
  /rs/embedded/url/:
    post:
      operationId: fetchEmbeddedSendingUrl
      tags:
      - Embedded
      summary: Fetch embedded sending URL
      description: >-
        Return a URL that lets a user prepare and send a document for signature from
        within your own app in an iframe or pop-up.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Embedded sending URL.
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
  /rs/embedded/{pending_file_id}/cancel/:
    post:
      operationId: cancelEmbeddedSignatureRequest
      tags:
      - Embedded
      summary: Cancel an embedded signature request
      parameters:
      - name: pending_file_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Embedded signature request canceled.
  /rs/embedded/signing_url/:
    post:
      operationId: fetchEmbeddedSigningUrl
      x-modeled: true
      tags:
      - Embedded
      summary: Fetch embedded signing URL for a recipient
      description: >-
        Generate a per-recipient signing URL for an embedded signature request, to be
        loaded in an iframe or pop-up. An optional redirect_url returns control to your
        app (with the pending_file_id) after signing. Path modeled from the embedded
        signing guide; verify exact path in the developer portal.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                pending_file_id:
                  type: integer
                email:
                  type: string
                  format: email
                redirect_url:
                  type: string
                  format: uri
      responses:
        '200':
          description: Signing URL for the recipient.
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
  /me/:
    get:
      operationId: fetchUser
      tags:
      - Users
      summary: Fetch user
      description: Fetch the authenticated user's details, including remaining envelope credits.
      responses:
        '200':
          description: The user object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '401':
          description: Missing or invalid access token.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 access token (sandbox or live) passed as a Bearer token in the Authorization header.
  schemas:
    Envelope:
      type: object
      description: A signature request (pending file) composed of one or more documents sent to up to 45 signers.
      properties:
        id:
          type: integer
          description: The pending file id of the signature request.
        status:
          type: string
          enum:
          - incomplete
          - complete
          - recipient_declined
          - canceled
        recipients:
          type: array
          items:
            type: object
            properties:
              email:
                type: string
                format: email
              status:
                type: string
                enum:
                - viewed
                - not_viewed
                - declined
                - finalized
        request_info:
          type: object
    User:
      type: object
      properties:
        id:
          type: integer
        email:
          type: string
          format: email
        name:
          type: string
        envelope_credits:
          type: integer
          description: Remaining envelope credits on the account.