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/spotdraft-v1-contract-apis-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: 3.2.0
info:
title: SpotDraft V1 Contract APIs API
version: v1
x-version: v1
x-logo:
url: https://cdn.spotdraft.com/assets/logo-black-new.png
backgroundColor: transparent
altText: SpotDraft Logo
href: https://spotdraft.com
x-favicon: https://cdn.spotdraft.com/assets/favicon.png
x-footer: © SpotDraft Inc. All rights reserved.
description: '# SpotDraft Public API
Welcome to the **SpotDraft Public API**.'
servers:
- url: https://api.eu.spotdraft.com
description: Europe
- url: https://api.in.spotdraft.com
description: India
- url: https://api.us.spotdraft.com
description: United States
- url: https://api.me.spotdraft.com
description: Middle East
tags:
- name: V1 Contract APIs
description: Contract creation, retrieval, updates, previews, downloads, uploads, and lifecycle actions across public API versions.
paths:
/api/v1/public/contracts:
get:
operationId: v1_public_contracts_retrieve
description: 'Returns contracts visible to the current workspace.
Use pagination parameters to step through the result set.'
summary: List Contracts
parameters:
- in: query
name: limit
schema:
type: integer
default: 10
description: The number of items to return per page.
- in: query
name: page
schema:
type: integer
default: 1
description: The page to return. Page numbers start at 1.
tags:
- V1 Contract APIs
security:
- ClientId: []
ClientSecret: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalContractV3List'
examples:
Example:
value:
total_results: 2
page: 1
limit: 10
results:
- id: 1234
created: '2021-05-20T04:52:04Z'
created_by: Acme
contract_link: https://app.spotdraft.com/contracts/v2/1234
contract_status: REDLINING
contract_name: Standard NDA
counter_party_name: Microsoft
contract_type_name: Standard NDA
contract_type_id: 100
reference_id: SD-1234
created_by_user_name: Elena Kagan
created_by_user_email: elena@acme.com
created_by_workspace: 1
- id: 4322
created: '2021-05-10T04:42:00Z'
created_by: Apple
contract_link: https://app.spotdraft.com/contracts/v2/4322
contract_status: EXECUTED
contract_name: Standard NDA - With Apple
counter_party_name: Apple Inc.
contract_type_name: Standard NDA
contract_type_id: 100
reference_id: SD-4322
created_by_user_name: Sonia Sotomayor
created_by_user_email: sonia@apple.com
created_by_workspace: 1
description: Contract List
x-tagGroup: Contracts
post:
operationId: v1_public_contracts_create
description: 'Creates a new contract from a SpotDraft template and returns the created contract.
Provide contract data, counterparty details, and any required signatories for the workflow.
In signatories list, sign_order should be set for either all items or no items of the list. Additionally when
sign_order is set for all items of signatories list then at-least one counter party signatory user should also be part
of the list.
The `contract_data` object must use **template field names as keys**. Each value should match the data type configured for that field in SpotDraft.
| Field type | Expected value | Example |
| ---------- | -------------- | ------- |
| String / text | String | `"Acme Inc."` |
| Multi-line text | String with line breaks if needed | `"Not applicable\nCustomer redlines pending"` |
| Number | Integer or decimal | `15` or `3.14` |
| Boolean / checkbox | Boolean | `true` |
| Date | `YYYY-MM-DD` | `"2026-03-28"` |
| Datetime | ISO 8601 timestamp | `"2026-09-15T10:30:00Z"` |
| Dropdown | Selected option value | `"annual_invoice"` |
| Multi-select | Array of selected option values | `["US", "IN"]` |
| Currency | `{ "type": "", "value": number }` | `{ "type": "USD", "value": 12000 }` |
| Duration | `{ "days": int, "type": "DAYS\|MONTHS\|YEARS", "value": int }` | `{ "days": 180, "type": "MONTHS", "value": 6 }` |
| Address | Object with address fields | `{ "line_one": "350 Fifth Avenue", "city": "New York", "country": "United States" }` |
| Repeating group | Array of row objects | `[{"milestone": "Implementation", "amount": {"type": "USD", "value": 5000}}]` |
| File / attachment | File object or uploaded file reference supported by the workflow | `{ "file_name": "security-schedule.pdf", "content_type": "application/pdf" }` |
Sample contract data:
```json
{
"agreement_date": "2026-03-28",
"renewal_review_at": "2026-09-15T10:30:00Z",
"customer_name": "Acme Inc.",
"billing_currency": {"type": "USD", "value": 12000},
"subscription_term": {"type": "MONTHS", "value": 12, "days": 365},
"auto_renewal": true,
"notice_period_days": 30,
"service_countries": ["US", "IN"],
"billing_address": {
"line_one": "350 Fifth Avenue",
"city": "New York",
"state": "NY",
"country": "United States",
"zipcode": "10118"
},
"pricing_schedule": [
{"milestone": "Implementation", "amount": {"type": "USD", "value": 5000}},
{"milestone": "Annual subscription", "amount": {"type": "USD", "value": 7000}}
],
"msa_attachment": {"file_name": "security-schedule.pdf", "content_type": "application/pdf"}
}
```'
summary: Create Contract
tags:
- V1 Contract APIs
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalCreateContract'
examples:
CreateContractRequest:
value:
contract_template_id: 1204
contract_data:
agreement_date: '2026-03-28'
renewal_review_at: '2026-09-15T10:30:00Z'
customer_name: Acme Inc.
billing_currency:
type: USD
value: 12000
subscription_term:
type: MONTHS
value: 12
days: 365
auto_renewal: true
notice_period_days: 30
service_countries:
- US
- IN
billing_address:
line_one: 350 Fifth Avenue
city: New York
state: NY
country: United States
zipcode: '10118'
pricing_schedule:
- milestone: Implementation
amount:
type: USD
value: 5000
- milestone: Annual subscription
amount:
type: USD
value: 7000
msa_attachment:
file_name: security-schedule.pdf
content_type: application/pdf
counter_party_details:
- is_individual: false
organization_type: company
organization_name: Acme Inc.
poc_details:
first_name: Avery
last_name: Stone
email: legal@acme.example
organization_details:
jurisdiction: Delaware
address:
line_one: 350 Fifth Avenue
city: New York
state: NY
country: United States
zipcode: '10118'
external_metadata:
id: hubspot-deal-10024
integration_name: HubSpot
record_type: Deal
record_data:
deal_stage: contractsent
owner_email: owner@acme.example
contract_name: Acme Master Services Agreement
summary: Create contract request
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/ExternalCreateContract'
multipart/form-data:
schema:
$ref: '#/components/schemas/ExternalCreateContract'
required: true
security:
- ClientId: []
ClientSecret: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalContractV3'
description: ''
x-tagGroup: Contracts
/api/v1/public/contracts/by_external_metadata/{external_metadata_id}:
get:
operationId: v1_public_contracts_by_external_metadata_retrieve
description: 'Returns up to 50 contracts linked to the supplied external metadata id.
Use this when you have an external system record id and need to find the related SpotDraft contracts.'
summary: List Contracts by External Metadata ID
parameters:
- in: path
name: external_metadata_id
schema:
type: string
description: External Metadata ID of the Contract. This can be used to search for contracts based on an ID specified when creating the contract using the external API.
required: true
tags:
- V1 Contract APIs
security:
- ClientId: []
ClientSecret: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalContractV3'
examples:
Example:
value:
- - id: 1234
created: '2021-05-20T04:52:04Z'
created_by: Elena Kagan
contract_link: https://app.spotdraft.com/contracts/v2/1234
contract_status: REDLINING
contract_name: Standard NDA
counter_party_name: Microsoft
contract_type_name: Standard NDA
reference_id: SD-1234
- id: 4322
created: '2021-05-10T04:42:00Z'
created_by: Sonia Sotomayor
contract_link: https://app.spotdraft.com/contracts/v2/4322
contract_status: EXECUTED
contract_name: Standard NDA - With Apple
counter_party_name: Apple Inc.
contract_type_name: Standard NDA
reference_id: SD-4322
description: Contract List
x-tagGroup: Contracts
/api/v1/public/contracts/{contract_id}/download:
post:
operationId: v1_public_contracts_download_create
description: 'Generates and returns the latest downloadable copy of the contract.
Use this when you need the contract file itself rather than a temporary download URL.'
summary: Download Contract File
parameters:
- in: path
name: contract_id
schema:
type: integer
description: ID of the Contract.
required: true
tags:
- V1 Contract APIs
security:
- ClientId: []
ClientSecret: []
responses:
'200':
content:
application/json:
schema:
type: string
format: binary
description: PDF copy of the Contract
x-tagGroup: Contracts
/api/v1/public/contracts/{contract_id}/download_link:
post:
operationId: v1_public_contracts_download_link_create
description: 'Returns a temporary download URL for the contract file.
Optionally provide a `format` in the request body (`PDF`, `DOCX`, or `DOCX_WITH_FALLBACK_TO_PDF`). If omitted, the response defaults to `PDF`.'
summary: Create Contract Download Link
parameters:
- in: path
name: contract_id
schema:
type: integer
description: ID of the Contract.
required: true
tags:
- V1 Contract APIs
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadLinkRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DownloadLinkRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/DownloadLinkRequest'
security:
- ClientId: []
ClientSecret: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadUrl'
examples:
Example:
value:
url: https://storage.googleapis.com/some/path?signature=ASDASD
file_name: Standard NDA a3b2.pdf
current_version_id: 1
description: Download Link
x-tagGroup: Contracts
/api/v1/public/contracts/{contract_id}/send_to_counterparties:
post:
operationId: v1_public_contracts_send_to_counterparties_create
description: Returns status code 200 if successful
summary: Send Contract to Counterparties
parameters:
- in: path
name: contract_id
schema:
type: integer
description: ID of the Contract.
required: true
tags:
- V1 Contract APIs
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SendToCounterparty'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SendToCounterparty'
multipart/form-data:
schema:
$ref: '#/components/schemas/SendToCounterparty'
required: true
security:
- ClientId: []
ClientSecret: []
responses:
'200':
description: Contract sent to counterparties.
x-tagGroup: Contracts
/api/v1/public/contracts/{contract_id}/status:
get:
operationId: v1_public_contracts_status_retrieve
description: 'Returns the display **status** and **contract name** for the requested contract.
When the `Enforce-User-Scoping` header is `true`, only contracts the specified user may access (based on their permissions) are returned.'
summary: Get Contract Status
parameters:
- in: path
name: contract_id
schema:
type: integer
description: ID of the Contract.
required: true
tags:
- V1 Contract APIs
security:
- ClientId: []
ClientSecret: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalContractStatus'
examples:
Example:
value:
contract_status: EXECUTED
contract_name: Service Agreement - Acme Corp
description: Contract Status
x-tagGroup: Contracts
components:
schemas:
DownloadLinkRequest:
description: Request body for Get Contract Download Link API. Optional; defaults to PDF if omitted.
properties:
format:
anyOf:
- $ref: '#/components/schemas/EditableDocumentDownloadFormat'
- type: 'null'
default: PDF
description: Download format for the contract file. Defaults to `PDF` when omitted.
title: DownloadLinkRequest
type: object
SendToCounterparty:
type: object
properties:
to_emails:
type: array
items:
type: string
description: Optional list of primary recipient email addresses. If omitted, SpotDraft uses the configured counterparty recipients for the contract.
cc_emails:
type: array
items:
type: string
description: Optional list of email addresses to copy on the outbound contract email.
bcc_emails:
type: array
items:
type: string
description: Optional list of blind-copy email addresses for the outbound contract email.
attachment_formats:
type: array
items:
$ref: '#/components/schemas/AttachmentFormatsEnum'
description: At least one attachment format is required. Allowed values come from the ContractEmailFormat enum.
extra_attachments:
type: array
items:
$ref: '#/components/schemas/EmailBase64Attachment'
description: Optional additional attachments to send with the contract email.
custom_message:
type: string
description: Optional custom message to include in the contract email body.
subject:
type: string
description: Optional custom email subject line.
required:
- attachment_formats
ExternalContractV3List:
type: object
properties:
total_results:
type: integer
description: Total number of items in the result set.
page:
type: integer
description: The current page number. Page numbers start at 1.
limit:
type: integer
description: The number of items returned per page.
results:
type: array
items:
$ref: '#/components/schemas/ExternalContractV3'
description: The list of Contracts
required:
- limit
- page
- results
- total_results
ExternalCreateContract:
type: object
description: Defines the data that is required for contract creation
properties:
contract_template_id:
type: integer
description: ID of the SpotDraft contract template used to generate the contract.
contract_data:
description: 'A key-value object where each key must match a template field name from the contract template.
Values should use the data type expected by that template field. Common patterns include:
- `string`: free-form text
- `number`: integer or decimal values
- `boolean`: `true` or `false`
- `date`: `YYYY-MM-DD`
- `datetime`: ISO 8601 timestamp such as `2026-03-28T10:15:00Z`
- `duration`: `{ "type": "MONTHS" | "YEARS" | "DAYS", "value": number, "days": number }`
- `currency`: `{ "type": "USD" | "INR" | ... , "value": number }`
- `dropdown`: the selected option value as configured in the template
- `multi_select`: an array of selected option values
- `address`: an object such as `{ "line_one": ..., "city": ..., "country": ..., "zipcode": ... }`
- `repeating`: an array of row objects for repeating groups or dynamic tables
- `file`: a file object or uploaded file reference where the workflow supports attachments
Use template field names exactly as configured in SpotDraft.'
counter_party_details:
type: array
items:
$ref: '#/components/schemas/ExternalCounterPartyDetails'
description: A list of counterparties involved in the contract. At least one counterparty must be provided.
external_metadata:
description: Optional external system metadata to associate with the contract, such as a CRM or ERP record reference.
entity_reference_id:
type: string
description: Optional creator organization entity reference ID. If omitted, SpotDraft uses the primary organization entity for the creator organization.
workflow_config:
$ref: '#/components/schemas/WorkflowConfig'
send_to_counterparty_config:
allOf:
- $ref: '#/components/schemas/SendToCounterparty'
description: Optional email-delivery settings to apply when sending the contract to counterparties.
contract_name:
type: string
description: Optional contract display name. If omitted, SpotDraft derives the contract name from the workflow or template configuration.
signatories:
type: array
items:
$ref: '#/components/schemas/ExternalCreateContractSignatory'
description: An optional list of signatories for the contract. If provided, each signatory must be associated with a counterparty specified in `counter_party_details`.
is_embedded_contract:
type: boolean
default: false
description: Set to true when the contract will be used in an embedded signing flow.
required:
- contract_data
- contract_template_id
- counter_party_details
ExternalContractV3:
type: object
description: Defines the data required to be shown affter contract creation
properties:
id:
type: integer
readOnly: true
created:
type: string
format: date-time
description: The timestamp at which this contract was first created.
contract_name:
type: string
description: The name of the contract. Might be defaulted from the template or edited by the user.
contract_link:
type: string
readOnly: true
description: The link to the SpotDraft app where this contract can be viewed. The user will need to log in (and have view access) to be able to view the contract.
contract_status:
allOf:
- $ref: '#/components/schemas/ContractDisplayStatusEnum'
description: The status of this contract.
readOnly: true
created_by:
type: string
readOnly: true
description: The email address of the user who created this contract.
counter_party_name:
type: string
readOnly: true
description: The name of the Counter Party for this contract.
contract_type_name:
type: string
readOnly: true
description: The type of Contract. The types are as defined by the Client.
contract_type_id:
type: integer
readOnly: true
description: The ID of the Contract Type.
created_by_workspace:
type: integer
readOnly: true
description: The workspace ID of the user who created or uploaded the executed contract on to SpotDraft's platform.
external_metadata:
type: object
additionalProperties: {}
readOnly: true
description: The external metadata associated with this contract.
reference_id:
type: string
readOnly: true
description: The reference id of the contract.
required:
- contract_link
- contract_name
- contract_status
- contract_type_id
- contract_type_name
- counter_party_name
- created
- created_by
- created_by_workspace
- external_metadata
- id
- reference_id
OrganizationDetails:
type: object
description: Defines structure for organization details
properties:
jurisdiction:
type: string
address:
$ref: '#/components/schemas/OrganizationAddress'
ExternalContractStatus:
type: object
description: Defines the data that is required to show the status of a contract
properties:
contract_status:
allOf:
- $ref: '#/components/schemas/ContractDisplayStatusEnum'
description: 'The status of this contract.
* `DRAFT` - DRAFT
* `REDLINING` - REDLINING
* `SIGN` - SIGN
* `EXECUTED` - EXECUTED
* `ON_HOLD` - ON_HOLD
* `VOIDED` - VOIDED'
contract_name:
type: string
description: The name of the contract that is visible to users.
required:
- contract_name
- contract_status
OrganizationAddress:
type: object
description: Defines structure for organization address
properties:
city:
type: string
state:
type: string
default: ''
country:
type: string
zipcode:
type: string
default: ''
line_one:
type: string
line_two:
type: string
email:
type: string
phone:
type: string
gst_number:
type: string
tax_id:
type: string
country_iso_code:
type: string
required:
- city
- country
- line_one
EmailBase64Attachment:
type: object
properties:
file_name:
type: string
mime_type:
type: string
content_base64:
type: string
required:
- content_base64
- file_name
- mime_type
AttachmentFormatsEnum:
enum:
- DOCX
- PDF
- TEMPLATE
type: string
description: '* `DOCX` - DOCX
* `PDF` - PDF
* `TEMPLATE` - TEMPLATE'
EditableDocumentDownloadFormat:
enum:
- PDF
- DOCX
- DOCX_WITH_FALLBACK_TO_PDF
title: EditableDocumentDownloadFormat
type: string
WorkflowConfig:
type: object
properties:
auto_send_to_counterparty:
type: boolean
default: false
api_only_contract_edits:
type: boolean
default: false
skip_cp_info_collection:
type: boolean
default: false
skip_creator_info_collection:
type: boolean
default: false
ExternalCreateContractSignatory:
type: object
description: Defines the data that is required for create contract signatory
properties:
name:
type: string
email:
type: string
title:
type: string
is_counterparty_signatory:
type: boolean
description: Set this as True if the signatory belongs to a counterparty. Else set it as False.
counterparty_name:
type: string
description: Required if `is_counterparty_signatory` is True. Must match the name of one of the counterparties in `counter_party_details`. If the counterparty `is_individual` is True, this should be the concatenation of the `first_name` and `last_name` from `poc_details` (e.g., 'John Doe'). If `is_individual` is False, this should match the `organization_name` of the counterparty. If `is_counterparty_signatory` is False, leave this field blank.
sign_order:
type: integer
note:
type: string
required:
- email
- is_counterparty_signatory
- name
DownloadUrl:
type: object
properties:
url:
type: string
description: The URL from which this contract can be downloaded.
file_name:
type: string
description: The file name of the contract.
current_version_id:
type: integer
description: The ID of the current version of the contract.
required:
- file_name
- url
ExternalPOCDetails:
type: object
description: Defines the data required in poc details
properties:
first_name:
type: string
last_name:
type: string
default: ''
email:
type: string
required:
- email
- first_name
ContractDisplayStatusEnum:
enum:
- DRAFT
- REDLINING
- SIGN
- EXECUTED
- ON_HOLD
- VOIDED
type: string
ExternalCounterPartyDetails:
type: object
description: Defines the data required for contract counterpartydetails
properties:
is_individual:
type: boolean
organization_type:
type: string
organization_name:
type: string
description: The legal name of the organization. Required if `is_individual` is False.
poc_details:
allOf:
- $ref: '#/components/schemas/ExternalPOCDetails'
description: Details of the primary point of contact for this counterparty. Required for both individuals and organizations.
organization_details:
$ref: '#/components/schemas/OrganizationDetails'
party_role_identifier:
type: string
minLength: 1
required:
- is_individual
- poc_details
securitySchemes:
ClickwrapId:
type: apiKey
in: header
name: clickwrap-id
description: Public clickwrap identifier header.
ClientId:
type: apiKey
name: client-id
in: header
ClientSecret:
type: apiKey
name: client-secret
in: header
NativeIntegrationBasic:
type: http
scheme: basic
description: HTTP Basic auth for supported native integrations. Send base64(client_id:client_secret) in the Authorization header.
OAuthBearer:
type: http
scheme: bearer
bearerFormat: JWT
description: OAuth 2.0 bearer token for workspace user access.
Origin:
type: apiKey
in: header
name: Origin
description: Browser origin header used for clickwrap domain validation.
x-logo:
url: https://cdn.spotdraft.com/assets/logo-black-new.png
backgroundColor: transparent
altText: SpotDraft Logo
href: https://spotdraft.com
x-tagGroups:
- name: Contracts
tags:
- V2.1 Contract APIs
- V2 Contract APIs
- V1 Contract APIs
- V2.1 Contract Approvals
- V2 Contract Approvals
- V2.1 Contract Activity
- V2 Contract Activity
- V2.1 Contract Invitations
- V2 Contract Invitations
- V2.1 Contract Metadata Values
- V2 Contract Metadata Values
- V2.1 Contract External Metadata
- V2.1 Contract Notes
- V2 Contract Notes
- V2.1 Contract Obligations
- V2.1 Contract Facets
- V2.1 Contract Versions
- V2 Contract Versions
- V2.1 Recipients
- V2 Recipients
- name: Clickwrap
tags:
- V2.1 Clickwrap
- name: Legal Intake
tags:
- V1 Legal Intake
- name: Workflow
tags:
- V2.1 Contract Metadata Definitions
- V2 Contract Metadata Definitions
- V2.1 Contract Types
- V2 Contract Types
- V2.1 Templates
- V2 Templates
- V1 Templates
- name: Platform
tags:
- V2.1 Users
- V2 Users
- V1 Users
- V2.1 Counterparties
- V2 Counterparties
- V2.1 Organizations
- V2 Organizations
- V1 Obligation Types
- V1 Native Integrations
- V2.1 Workspace Files
- V2.1 Tasks and Reminders
- V2 Tasks and Reminders
- V2.1 Webhooks
- V1 Webhooks
- V1 Emails
- V2.1 Analytics Query
- V2.1 Workspaces
- V2.1 Workspace Tags
- name: Sidebar
tags:
- V2.1 Sidebar