SoftSync AI Signing API

The Signing API from SoftSync AI — 7 operation(s) for signing.

Operations 8

POST /signing/envelopes Send a PDF on a record for signing by one or more people #
GET /signing/envelopes Signings across every record you can see: waiting, signed, declined or expired #
GET /signing/records/{recordId} A record's signings, newest first #
GET /signing/envelopes/{id} A signing with its people and audit trail #
POST /signing/envelopes/{id}/void Cancel a signing in progress #
POST /signing/envelopes/{id}/parties/{partyId}/resend Email a person their signing link again #
PATCH /signing/envelopes/{id}/parties/{partyId} Fix a person's name or email before they sign; their old link stops working #

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/softsync-ai:softsync-ai-signing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

softsync-ai-signing-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Softsync Signing API
  description: '## Introduction


    The Softsync Platform API


    This API lets you read and write your Softsync data from your own applications. Authenticate with a personal API key created in **Settings → API Keys**, sent as the `x-api-key` header.


    **New here?** Read **Concepts** first, then **Authentication**, then **Quickstart: full cycle** — it walks the whole thing end to end. **Objects**, **Records**, **Groups & Views** and **Notes** cover each area in depth, and **Code Generation** shows how to turn this document into a typed client.


    To try a request from this page, paste your API key into the **Authentication** panel on the right.


    ## Support


    If you need help with API access or integration details, contact contact@softsync.ai.'
  version: 0.1.0
  contact: {}
servers: []
security:
- x-api-key: []
tags:
- name: Signing
paths:
  /signing/envelopes:
    post:
      operationId: sendForSigning
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendForSigningDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeDto'
      security:
      - bearer: []
      summary: Send a PDF on a record for signing by one or more people
      tags:
      - Signing
      x-feature: signing
    get:
      operationId: listSignings
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      - name: status
        required: false
        in: query
        schema:
          $ref: '#/components/schemas/SigningQueueFilter'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EnvelopeDto'
      security:
      - bearer: []
      summary: 'Signings across every record you can see: waiting, signed, declined or expired'
      tags:
      - Signing
      x-feature: signing
  /signing/records/{recordId}:
    get:
      operationId: listRecordSignings
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      - name: recordId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EnvelopeDto'
      security:
      - bearer: []
      summary: A record's signings, newest first
      tags:
      - Signing
      x-feature: signing
  /signing/envelopes/{id}:
    get:
      operationId: getSigning
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      - name: id
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeDto'
      security:
      - bearer: []
      summary: A signing with its people and audit trail
      tags:
      - Signing
      x-feature: signing
  /signing/envelopes/{id}/void:
    post:
      operationId: voidSigning
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      - name: id
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoidEnvelopeDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeDto'
      security:
      - bearer: []
      summary: Cancel a signing in progress
      tags:
      - Signing
      x-feature: signing
  /signing/envelopes/{id}/parties/{partyId}/resend:
    post:
      operationId: resendSigning
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: partyId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeDto'
      security:
      - bearer: []
      summary: Email a person their signing link again
      tags:
      - Signing
      x-feature: signing
  /signing/envelopes/{id}/parties/{partyId}/link:
    post:
      operationId: getSigningLink
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: partyId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningLinkDto'
      security:
      - bearer: []
      summary: A person's signing link, to send them yourself
      tags:
      - Signing
      x-feature: signing
  /signing/envelopes/{id}/parties/{partyId}:
    patch:
      operationId: correctSigningParty
      parameters:
      - name: x-workspace-id
        in: header
        description: Workspace ID
        required: true
        schema:
          type: string
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: partyId
        required: true
        in: path
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CorrectPartyDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeDto'
      security:
      - bearer: []
      summary: Fix a person's name or email before they sign; their old link stops working
      tags:
      - Signing
      x-feature: signing
components:
  schemas:
    SigningQueueFilter:
      type: string
      enum:
      - waiting
      - signed
      - declined
      - expired
      - cancelled
    SigningFieldDto:
      type: object
      properties:
        id:
          type: string
        role:
          type: string
          description: 'Who fills it: a party role, "Sender" or "Record"'
        kind:
          allOf:
          - $ref: '#/components/schemas/SigningFieldKind'
        page:
          type: number
          description: 0-based page index
        x:
          type: number
        y:
          type: number
        w:
          type: number
        h:
          type: number
        required:
          type: boolean
        label:
          type: string
        fontSize:
          type: number
        options:
          description: Choices of a select
          type: array
          items:
            type: string
        value:
          type: string
          description: What a field filled from the record prints, as Liquid
      required:
      - id
      - role
      - kind
      - page
      - x
      - y
      - w
      - h
      - required
    FileAttachment:
      type: object
      properties:
        id:
          type: string
        path:
          type: string
        fileName:
          type: string
        fileSize:
          type: number
        mime:
          type: string
        isInline:
          type: boolean
        contentId:
          type: string
        url:
          type: string
      required:
      - id
      - path
      - fileName
      - fileSize
      - mime
    PartyInputDto:
      type: object
      properties:
        role:
          type: string
          description: The role in the document this person fills, e.g. "Customer"
        name:
          type: string
        email:
          type: string
        kind:
          allOf:
          - $ref: '#/components/schemas/PartyKind'
        step:
          type: number
          description: 'Routing step: the same number signs at the same time, higher numbers wait'
          minimum: 1
          maximum: 20
        contactId:
          type: string
          description: A contact record this person is
      required:
      - role
      - name
      - email
      - kind
      - step
    EnvelopeDto:
      type: object
      properties:
        id:
          type: string
        recordId:
          type: string
        itemId:
          type: string
        title:
          type: string
        message:
          type: string
        status:
          allOf:
          - $ref: '#/components/schemas/EnvelopeStatus'
        stage:
          type: number
          description: The routing step now waiting for signatures
        parties:
          type: array
          items:
            $ref: '#/components/schemas/PartyDto'
        fields:
          type: array
          items:
            $ref: '#/components/schemas/SigningFieldDto'
        pages:
          type: array
          items:
            $ref: '#/components/schemas/SigningPageDto'
        senderName:
          type: string
        senderEmail:
          type: string
        expiresAt:
          type: string
        remindEveryDays:
          type: number
        completedAt:
          type: string
        signedFile:
          $ref: '#/components/schemas/FileAttachment'
        createdAt:
          type: string
          format: date-time
        canManage:
          type: boolean
          description: 'True for its sender and workspace admins: they can cancel it, send it again or fix an address'
        events:
          description: Signer IP addresses and devices are left out for people who can only read the record
          type: array
          items:
            $ref: '#/components/schemas/SigningEventDto'
      required:
      - id
      - recordId
      - itemId
      - title
      - status
      - stage
      - parties
      - fields
      - pages
      - senderName
      - senderEmail
      - remindEveryDays
      - createdAt
      - canManage
    PartyDto:
      type: object
      properties:
        id:
          type: string
        role:
          type: string
        name:
          type: string
        email:
          type: string
        kind:
          allOf:
          - $ref: '#/components/schemas/PartyKind'
        step:
          type: number
        status:
          allOf:
          - $ref: '#/components/schemas/PartyStatus'
        contactId:
          type: string
        lastSentAt:
          type: string
        viewedAt:
          type: string
        signedAt:
          type: string
        declineReason:
          type: string
      required:
      - id
      - role
      - name
      - email
      - kind
      - step
      - status
    SigningEventDto:
      type: object
      properties:
        id:
          type: string
        type:
          allOf:
          - $ref: '#/components/schemas/SigningEventType'
        partyId:
          type: string
        at:
          type: string
        ip:
          type: string
        userAgent:
          type: string
        detail:
          type: string
        hash:
          type: string
      required:
      - id
      - type
      - at
      - hash
    SigningEventType:
      type: string
      enum:
      - sent
      - delivered
      - code_sent
      - verified
      - viewed
      - consented
      - signed
      - declined
      - reminded
      - link_copied
      - corrected
      - voided
      - expired
      - completed
      - stalled
      - undelivered
    SigningFieldKind:
      type: string
      enum:
      - signature
      - initials
      - date_signed
      - full_name
      - email
      - text
      - number
      - checkbox
      - select
    CorrectPartyDto:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
    EnvelopeStatus:
      type: string
      enum:
      - sent
      - completed
      - declined
      - voided
      - expired
    SendForSigningDto:
      type: object
      properties:
        itemId:
          type: string
          description: The PDF (a Files tab item) to sign
        parties:
          type: array
          items:
            $ref: '#/components/schemas/PartyInputDto'
        senderValues:
          type: object
          additionalProperties: true
          description: Values of the sender's own fields, by field id
        title:
          type: string
        message:
          type: string
          description: A note in the email to every party
        expiresInDays:
          type: number
          minimum: 1
          maximum: 120
          default: 30
        remindEveryDays:
          type: number
          minimum: 0
          maximum: 30
          default: 3
          description: 0 sends no reminders
        statusFieldId:
          type: string
          description: A text or choice field on the record set to sent, then completed, declined, voided or expired, so record-updated automations can follow along. A choice field needs a choice with that value or label.
      required:
      - itemId
      - parties
    PartyStatus:
      type: string
      enum:
      - waiting
      - sent
      - viewed
      - signed
      - declined
    SigningPageDto:
      type: object
      properties:
        width:
          type: number
        height:
          type: number
      required:
      - width
      - height
    PartyKind:
      type: string
      enum:
      - signer
      - copy
    VoidEnvelopeDto:
      type: object
      properties:
        reason:
          type: string
    SigningLinkDto:
      type: object
      properties:
        url:
          type: string
          description: The address this person opens to sign
      required:
      - url
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
    x-api-key:
      type: apiKey
      in: header
      name: x-api-key