Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://ironcladapp.com/public/api/v1
https://eu1.ironcladapp.com/public/api/v1
https://demo.ironcladapp.com/public/api/v1
https://preview.ironcladapp.com/public/api/v1
/records
View all records in the company, with filtering available via query parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | The page number used when paginating through a list of results. |
| pageSize | query | optional | integer | A limit of the number of results to return. |
| types | query | optional | string | Comma separated (no spaces) record types to export. Use the Retrieve Records Schema endpoint to retrieve a list of types. |
| lastUpdated | query | optional | string | Get records updated since (UTC) |
| filter | query | optional | string | Filter records for those that contain (1) the specified property with (2) the specified value. The record property ID should be enclosed in brackets |
| sortField | query | optional | string | The field to sort Records. Only one field is supported in the sort operation. |
| sortDirection | query | optional | string | The direction the records are sorted by in correlation with the |
200
400
GET /records
/records
Create a contract record by specifying its intended metadata properties
application/json
RecordsCreateRecordRequest
| Property | Type | Required |
|---|---|---|
| name | string | required |
| type | string | required |
| links | array | optional |
| └ recordId | string | optional |
| parent | object | optional |
| └ recordId | string | optional |
| children | array | optional |
| └ recordId | string | optional |
| properties | object | required |
| └ agreementDate | object | optional |
| └ type | string | optional |
| └ value | string | optional |
| └ counterpartyName | object | optional |
| └ type | string | optional |
| └ value | string | optional |
200
400
POST /records
/records/export
Export a records report with filtering available via query parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| types | query | optional | string | Comma separated list of record types to export. Example: |
| properties | query | optional | string | IDs of properties to export, comma separated. Example: |
200
400
GET /records/export
/records/metadata
View the schema associated with contract records, including available record types and metadata properties.
200
400
GET /records/metadata
/records/smart-import
Retrieve status of predictions of specific smart import record or all records in an import, one of Record Id or Import Id is required.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| recordId | query | optional | string | The ID of the Record for prediction status. |
| importId | query | optional | string | The ID of the Import for prediction statuses. |
200
400
403
404
GET /records/smart-import
/records/smart-import
Upload a file to create a record with smart import and predictions. Provide none of recordType, newRecordTypeId, or newRecordTypeDisplayName to default to Imported type.
multipart/form-data
RecordsUploadSmartImportRecordRequest
| Property | Type | Required |
|---|---|---|
| attachment | string | required |
| recordType | string | optional |
| newRecordTypeId | string | optional |
| newRecordTypeDisplayName | string | optional |
200
400
403
404
POST /records/smart-import
/records/smart-import/{importId}
Upload a file to an existing import and create a record with smart import and predictions. Provide none of recordType, newRecordTypeId, or newRecordTypeDisplayName to default to Imported type.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| importId | path | required | string | The Import Id. You can upload a record to an existing import in the repository. |
multipart/form-data
RecordsUploadSmartImportRecordWithPredictionsRequest
| Property | Type | Required |
|---|---|---|
| attachment | string | required |
| recordType | string | required |
| newRecordTypeId | string | optional |
| newRecordTypeDisplayName | string | optional |
200
400
403
404
POST /records/smart-import/{importId}
/records/{id}
Delete an existing record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID or Ironclad ID of the Record. |
204
404
DELETE /records/{id}
/records/{id}
View a specific record and its associated data
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID or Ironclad ID of the Record. |
200
400
GET /records/{id}
/records/{id}
Update specific fields on a record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID or Ironclad ID of the Record. |
application/json
RecordsUpdateMetadataRequest
| Property | Type | Required |
|---|---|---|
| name | string | optional |
| type | string | optional |
| addLinks | array | optional |
| └ recordId | string | optional |
| setParent | object | optional |
| └ recordId | string | optional |
| addChildren | array | optional |
| └ recordId | string | optional |
| removeLinks | array | optional |
| └ recordId | string | optional |
| removeParent | boolean | optional |
| addProperties | object | optional |
| └ agreementDate | object | optional |
| └ type | string | optional |
| └ value | string | optional |
| └ counterpartyName | object | optional |
| └ type | string | optional |
| └ value | string | optional |
| removeChildren | array | optional |
| └ recordId | string | optional |
| removeProperties | array | optional |
200
400
404
PATCH /records/{id}
/records/{id}
Update an existing record with a new set of metadata
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID or Ironclad ID of the Record. |
application/json
RecordsReplaceMetadataRequest
| Property | Type | Required |
|---|---|---|
| name | string | required |
| type | string | required |
| parent | object | optional |
| └ recordId | string | optional |
| children | array | optional |
| └ recordId | string | optional |
| properties | object | required |
| └ agreementDate | object | optional |
| └ type | string | optional |
| └ value | string | optional |
| └ counterpartyName | object | optional |
| └ type | string | optional |
| └ value | string | optional |
200
400
PUT /records/{id}
/records/{id}/attachments/{key}
Remove an attachment associated with a specific record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID or Ironclad ID of the Record. |
| key | path | required | string | The attachment key. |
204
Bad request error when deleting attachment.
DELETE /records/{id}/attachments/{key}
/records/{id}/attachments/{key}
View an attachment associated with a specific record
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID or Ironclad ID of the Record. |
| key | path | required | string | The attachment key. |
200
400
GET /records/{id}/attachments/{key}
/records/{id}/attachments/{key}
Create an attachment on a specified record at the specified attachment key.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID or Ironclad ID of the Record. For an explanation of Record IDs or Ironclad IDs and how to find them, see Getting Started. |
| key | path | required | string | The attachment key. You can retrieve a list of available attachment keys with the Retrieve Records Schema endpoint. |
multipart/form-data
RecordsCreateAttachmentRequest
| Property | Type | Required |
|---|---|---|
| metadata | object | optional |
| └ filename | string | optional |
| attachment | string | optional |
200
Bad request error for creating record attachment.
POST /records/{id}/attachments/{key}
/webhooks
View all webhooks associated with a specific company with filtering available via query parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | The page number used when paginating through a list of results. |
| pageSize | query | optional | integer | A limit of the number of results to return. |
200
400
GET /webhooks
/webhooks
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.
application/json
WebhooksCreateNewRequest
| Property | Type | Required |
|---|---|---|
| events | array | required |
| targetURL | string | required |
200
Bad request error when creating webhook.
POST /webhooks
/webhooks/verification-key
View the verification key for webhook security implementations
200
400
GET /webhooks/verification-key
/webhooks/{id}
Delete a specific webhook
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the webhook. |
200
400
DELETE /webhooks/{id}
/webhooks/{id}
View the data associated with a specific webhook
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the webhook. |
200
400
GET /webhooks/{id}
/webhooks/{id}
Update the data associated with a specific webhook
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the webhook. |
application/json
WebhooksUpdateWebhookDataRequest
| Property | Type | Required |
|---|---|---|
| events | array | optional |
| targetURL | string | optional |
200
400
PATCH /webhooks/{id}
/workflow-schemas
Returns a list of workflow schemas. Each schema specifies the fields used in the workflow’s launch form.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| form | query | required | string | The launch form is the only form supported at this time. |
| x-as-user-email | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user email. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
| x-as-user-id | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user id. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
200
400
GET /workflow-schemas
/workflow-schemas/{id}
Returns the fields used in the workflow’s launch form.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier of a schema (see explanation of Template ID). A list of identifiers can be retrieved using the |
| form | query | optional | string | — |
| x-as-user-email | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user email. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
| x-as-user-id | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user id. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
200
400
GET /workflow-schemas/{id}
/workflows
List all workflows in your Ironclad account.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | The page number used when paginating through a list of results. |
| pageSize | query | optional | integer | A limit of the number of results to return. |
| status | query | optional | string | Filter the workflows that are listed based on their status. If this parameter is omitted, |
| template | query | optional | string | Filter workflows to a specific Template ID. |
| lastUpdated | query | optional | string | Retrieve workflows that have been updated since a UTC date. |
| filter | query | optional | string | Filter workflows using a formula. The workflow attribute ID should be enclosed in brackets Workflow attributes for a specific workflow design can be identified using the List All Workflow Schemas endpoint. Supported formula operations include:
For more information on writing formulas, please refer to |
200
GET /workflows
/workflows
Launch a new Workflow synchronously.
application/json
WorkflowRequestModel
| Property | Type | Required |
|---|---|---|
| creator | object | required |
| └ type | string | optional |
| string | optional | |
| template | string | required |
| attributes | object | required |
| └ draft | array | optional |
| └ url | string | optional |
| └ paperSource | string | optional |
| └ counterpartyName | string | required |
Launched Workflow Response.
Error Launching Workflow.
POST /workflows
/workflows/async
Launch a new Workflow asynchronously for non-blocking performance, which is helpful when/if you provide files to the Workflow.
application/json
WorkflowRequestModel
| Property | Type | Required |
|---|---|---|
| creator | object | required |
| └ type | string | optional |
| string | optional | |
| template | string | required |
| attributes | object | required |
| └ draft | array | optional |
| └ url | string | optional |
| └ paperSource | string | optional |
| └ counterpartyName | string | required |
The response of the initiated async workflow launch.
Bad Request
POST /workflows/async
/workflows/async/{asyncJobId}
Check the status of a Workflow you created while using the Create a Workflow Async route.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| asyncJobId | path | required | string | The identifier provided in the response of creating a Workflow asynchronously. |
The status of the workflow launch.
404
GET /workflows/async/{asyncJobId}
/workflows/{id}
View the data associated with a specific workflow
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
200
400
GET /workflows/{id}
/workflows/{id}/approval-requests
Returns a list of approval requests that have taken place on the workflow.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
| page | query | optional | integer | The page number used when paginating through a list of results. |
| pageSize | query | optional | integer | A limit of the number of results to return. |
| actorDetails | query | optional | boolean | An optional boolean parameter that adds additional information about the actor to each item in the response. Defaults to false. |
200
403
404
GET /workflows/{id}/approval-requests
/workflows/{id}/approvals
Returns a list of approvals for the workflow. The approvalGroups property will display only triggered approvals (i.e. conditional approvals that have not been triggered will not appear).
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
200
400
GET /workflows/{id}/approvals
/workflows/{id}/approvals/{roleId}
Updates an approval to the specified status. Approvals can only be updated during the Review step.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
| roleId | path | required | string | The unique identifier of the approver role whose status should be changed. This identifier can be retrieved using the |
application/json
WorkflowsUpdateApprovalStatusRequest
| Property | Type | Required |
|---|---|---|
| user | object | required |
| └ type | string | optional |
| string | optional | |
| status | string | required |
200
400
PATCH /workflows/{id}/approvals/{roleId}
/workflows/{id}/attributes
The workflow must be in the Review step in order for its data to be updated. Use the remove action to clear field values and the set action to add or modify values. Form validation is enforced; required fields cannot be removed and any required fields triggered by conditions must be populated.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
| x-as-user-email | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user email. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
| x-as-user-id | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user id. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
application/json
WorkflowsUpdateMetadataRequest
| Property | Type | Required |
|---|---|---|
| comment | string | optional |
| updates | array | required |
| └ path | string | required |
| └ value | string | optional |
| └ action | string | required |
200
400
403
404
PATCH /workflows/{id}/attributes
/workflows/{id}/comments
Creates a comment in the specified workflow’s activity feed.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
application/json
WorkflowsCreateCommentRequest1
| Property | Type | Required |
|---|---|---|
| comment | string | required |
| creator | object | required |
| └ type | string | optional |
| string | optional | |
| addUsersToWorkflow | boolean | optional |
| repliedToActivityFeedMessageId | string | optional |
200
400
POST /workflows/{id}/comments
/workflows/{id}/document/{key}/download
Download a document associated with a specific workflow via a reference to its document key
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
| key | path | required | string | The unique identifier for the attachment. This key can be located using the Retrieve a Workflow endpoint. In the response, locate the file attribute (e.g., |
200
400
GET /workflows/{id}/document/{key}/download
/workflows/{id}/emails
List all email threads in the specified workflow
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The unique identifier of a workflow |
| page | query | optional | integer | The page number used when paginating through a list of results. |
| pageSize | query | optional | integer | A limit of the number of results to return. |
GET Emails Response.
404 not found
GET /workflows/{id}/emails
/workflows/{id}/emails/{emailThreadId}
List a single email thread for a specified workflow
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The unique identifier of a workflow |
| emailThreadId | path | optional | string | The unique identifier of an email thread |
GET Email Response
404 not found
GET /workflows/{id}/emails/{emailThreadId}
/workflows/{id}/emails/{emailThreadId}/attachments/{attachmentId}
Retrieve an attachment from the specified email thread
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | optional | string | The unique identifier of a workflow |
| emailThreadId | path | optional | string | The unique identifier of an email thread |
| attachmentId | path | required | string | The unique identifier for the attachment. This key can be located using the Retrieve email threads from workflow endpoint. In the response, locate the file attribute (e.g., |
200
404 not found
GET /workflows/{id}/emails/{emailThreadId}/attachments/{attachmentId}
/workflows/{id}/participants
Returns a list of workflow participants.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
| page | query | optional | integer | The page number used when paginating through a list of results. |
| pageSize | query | optional | integer | A limit of the number of results to return. |
| query | optional | string | The Ironclad user’s email address. |
200
403
404 not found
GET /workflows/{id}/participants
/workflows/{id}/revert-to-review
Reverts a workflow to the Review step. Only workflows sourced from Workflow Designer and in the Sign step can be reverted.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
| x-as-user-email | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user email. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
| x-as-user-id | header | optional | string | Filters the list of workflow schemas based on the permissions of a user associated with the specified user id. Permissions can be launch, view, or both. Corresponds to the permissions here: https://support.ironcladapp.com/s/article/Understanding-and-Managing-Permissions |
application/json
WorkflowsRevertToReviewRequest
| Property | Type | Required |
|---|---|---|
| user | object | required |
| └ type | string | optional |
| string | optional |
204
400
403
404
PATCH /workflows/{id}/revert-to-review
/workflows/{id}/signatures
Returns a list of workflow signers and the status of their signature.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
200
400
403
GET /workflows/{id}/signatures
/workflows/{id}/turn-history
An array of objects for each turn on a workflow.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The unique identifier or Ironclad ID of a workflow. |
| page | query | optional | integer | The page number used when paginating through a list of results. |
| pageSize | query | optional | integer | A limit of the number of results to return. |
200
403
404
GET /workflows/{id}/turn-history
ActivityAuthorModel
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/InternalUserModel"
},
{
"$ref": "#/components/schemas/ExternalUserModel"
},
{
"type": "object",
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"example": "integration"
},
"displayName": {
"type": "string",
"example": "Salesforce"
}
}
},
{
"type": "object",
"properties": {
"type": {
"enum": [
"system"
],
"type": "string",
"example": "system"
},
"displayName": {
"type": "string",
"example": "Ironclad"
}
}
}
]
}
ActivityMetadataModel
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/CommentMetadataModel"
}
],
"discriminator": {
"mapping": {
"comment": "#/components/schemas/CommentMetadataModel"
},
"propertyName": "objectType"
}
}
ActivityReactionModel
{
"type": "object",
"properties": {
"emojiId": {
"type": "string",
"example": "smile"
},
"reactors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserModel"
}
}
}
}
AttachmentNotFound
{
"type": "object",
"title": "Bad Request Error - attachmentId Not Found",
"properties": {
"code": {
"type": "string",
"example": "NOT_FOUND"
},
"param": {
"type": "string",
"example": "attachmentId"
},
"message": {
"type": "string",
"example": "attachmentId does not exist"
}
},
"description": "attachmentId Not Found Request Error"
}
AttributeNumberModel
{
"type": "number",
"example": 5
}
AttributeStringModel
{
"type": "string",
"example": "Example Value"
}
AttributesModel
{
"type": "object",
"required": [
"counterpartyName"
],
"properties": {
"draft": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"example": "https://www.law.berkeley.edu/wp-content/uploads/2018/12/Resume-Samples-1.pdf",
"description": "URL of the file to be uploaded"
}
}
},
"description": "Provide a URL for a file representing the first uploaded version of a counterparty paper. This field is required when the template source is set to third party paper"
},
"paperSource": {
"enum": [
"Counterparty paper",
"Our paper"
],
"type": "string",
"description": "Indicate the type of paper source used on a contract that supports both templatized and third party paper functionality. This field is required when there exists a question for selecting paper source on the template"
},
"counterpartyName": {
"type": "string",
"example": "Example Company"
}
},
"description": "The data that will be used to populate the workflow's fields. Learn more about the various attributes and their associated types by viewing the [Launch a Workflow](https://developer.ironcladapp.com/docs/launch-a-workflow) guide. Your attributes will differ and include more than this simple example."
}
BadRequestErrorRecordAttachmentAlreadyExists
{
"type": "object",
"title": "Bad Request Error - Record Attachment Already Exists.",
"properties": {
"code": {
"type": "string",
"example": "INVALID_PARAM"
},
"param": {
"type": "string",
"example": "attachmentKey"
},
"message": {
"type": "string",
"example": "record attachment key 'signedCopy' already exists for record"
}
},
"description": "Bad request error. The specified attachment key has an existing file."
}
BadRequestErrorRecordAttachmentExtension
{
"type": "object",
"title": "Bad Request Error - Record Attachment Extension Not Supported",
"properties": {
"code": {
"type": "string",
"example": "INVALID_PARAM"
},
"param": {
"type": "string",
"example": "metadata.filename"
},
"message": {
"type": "string",
"example": "filename \"NDA - Acme LLC\" does not have an accepted extension. Only the following extensions are allowed: .adoc, .asice, .bdoc, .csv, .ddoc, .doc, .docx, .edoc, .eml, .gif, .htm, .jpeg, .jpg, .msg, .pdf, .png, .ppt, .pptx, .rtf, .tif, .tif, .txt, .xls, .xlsx, .xml"
}
},
"description": "Bad request error. The specified filename does not include a supported extension."
}
BadRequestErrorRecordAttachmentIDNotFound
{
"type": "object",
"title": "Bad Request Error - Record Attachment ID Not Found",
"properties": {
"code": {
"type": "string",
"example": "NOT_FOUND"
},
"message": {
"type": "string",
"example": "couldn't find an attachment matching the key [SOME_NONEXISTENT_ATTACHMENT_KEY] for record with id [RECORD_ID]"
}
},
"description": "Record Attachment ID Not Found Request Error"
}
BadRequestErrorRecordAttachmentMissingFormDataPart
{
"type": "object",
"title": "Bad Request Error - Missing Form-Data Part",
"properties": {
"code": {
"type": "string",
"example": "INVALID_PARAM"
},
"param": {
"type": "string",
"example": "metadata"
},
"message": {
"type": "string",
"example": "missing required form-data part 'metadata'"
}
},
"description": "Bad request error. Missing form-data part."
}
BadRequestErrorRecordAttachmentUnknownAttachmentKey
{
"type": "object",
"title": "Bad Request Error - Unknown Record Attachment Key",
"properties": {
"code": {
"type": "string",
"example": "INVALID_PARAM"
},
"param": {
"type": "string",
"example": "attachmentKey"
},
"message": {
"type": "string",
"example": "unknown record attachment key 'someRandomKey'"
}
},
"description": "Bad request error. Unknown record attachment key."
}
BadRequestErrorRecordAttachmentUnknownContentType
{
"type": "object",
"title": "Bad Request Error - Unknown Content Type",
"properties": {
"code": {
"type": "string",
"example": "INVALID_PARAM"
},
"param": {
"type": "string",
"example": "metadata.filename"
},
"message": {
"type": "string",
"example": "unknown content type 'filename or extension'"
}
},
"description": "Bad request error. Unknown content type."
}
BadRequestErrorRecordIDNotFound
{
"type": "object",
"title": "Bad Request Error - Record ID Not Found",
"properties": {
"code": {
"type": "string",
"example": "NOT_FOUND"
},
"message": {
"type": "string",
"example": "couldn't find a record matching the id [SOME_NONEXISTENT_RECORD_ID]"
}
},
"description": "Record ID Not Found Request Error"
}
BadRequestErrorRecordNotFound
{
"type": "object",
"title": "Bad Request Error - Record Does not Exist",
"properties": {
"code": {
"type": "string",
"example": "NOT_FOUND"
},
"message": {
"type": "string",
"example": "couldn't find a record matching the id workflow:6346f76fb8fc01d2b43e7c15a"
}
},
"description": "Bad request error. The specified record does not exist."
}
BadRequestErrorWorkflowLaunch
{
"type": "object",
"title": "Bad Request Error - Workflow Launch",
"readOnly": true,
"required": [
"code",
"message",
"param"
],
"properties": {
"code": {
"enum": [
"MISSING_PARAM",
"INVALID_PARAM",
"INVALID_STATE"
],
"type": "string",
"title": "",
"example": "MISSING_PARAM",
"readOnly": true,
"description": "A unique code to identify why the workflow cannot be launched."
},
"param": {
"type": "string",
"title": "",
"example": "counterpartySignerTitle",
"readOnly": true,
"description": "The required or expected parameter(s) that may be missing in order to launch the workflow."
},
"message": {
"type": "string",
"title": "",
"example": "missing required attribute",
"readOnly": true,
"description": "A message indicating why the workflow cannot be launched."
}
},
"description": ""
}
BaseActivityFeedItemModel
{
"type": "object",
"required": [
"id",
"type",
"metadata",
"author"
],
"properties": {
"id": {
"type": "string"
},
"type": {
"enum": [
"comment"
],
"type": "string"
},
"author": {
"$ref": "#/components/schemas/ActivityAuthorModel"
},
"metadata": {
"$ref": "#/components/schemas/ActivityMetadataModel"
},
"reactions": {
"$ref": "#/components/schemas/ActivityReactionModel"
},
"isExternal": {
"type": "boolean"
}
}
}
CommentMetadataModel
{
"type": "object",
"properties": {
"message": {
"type": "string",
"example": "This is a comment Jon Snow"
},
"repliedTo": {
"type": "object",
"properties": {
"author": {
"$ref": "#/components/schemas/ActivityAuthorModel"
},
"activityItem": {
"type": "string",
"example": "TODO: unsure this is the right place"
}
}
},
"markedUpMessage": {
"type": "string",
"example": "This is a comment @[Jon Snow](630d28059893be00e1ccc9e7)"
},
"addedParticipants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserModel"
}
}
}
}
CreatorEmailModel
{
"type": "object",
"properties": {
"type": {
"type": "string",
"default": "email",
"description": "The type of value used to identify the user."
},
"email": {
"type": "string",
"example": "example@example.com",
"description": "The email address of the Ironclad user."
}
},
"description": "The Ironclad user (must be a user in your Ironclad account) used to launch the workflow by using the user's email address."
}
CreatorIdModel
{
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "abcd1234",
"description": "The user ID of the Ironclad user."
},
"type": {
"type": "string",
"default": "id",
"description": "The type of value used to identify the user."
}
},
"description": "The Ironclad user (must be a user in your Ironclad account) used to launch the workflow by using the user's ID."
}
CreatorModel
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/CreatorEmailModel"
},
{
"$ref": "#/components/schemas/CreatorIdModel"
}
],
"title": "creator",
"description": "The Ironclad user (must be a user in your Ironclad account) to be used for launching the workflow."
}
EmailNotFound
{
"type": "object",
"title": "Bad Request Error - Email ID Not Found",
"properties": {
"code": {
"type": "string",
"example": "NOT_FOUND"
},
"param": {
"type": "string",
"example": "emailThreadId"
},
"message": {
"type": "string",
"example": "emailThreadId does not exist"
}
},
"description": "Email ID Not Found Request Error"
}
EmailResponseModel
{
"type": "object",
"oneOf": [
{
"$ref": "#/components/schemas/InboundEmailResponse"
},
{
"$ref": "#/components/schemas/OutboundEmailResponse"
}
]
}
ExternalUserModel
{
"type": "object",
"required": [
"type",
"email",
"companyName"
],
"properties": {
"type": {
"enum": [
"externalUser"
],
"type": "string",
"example": "externalUser"
},
"email": {
"type": "string",
"example": "boba@ironclad.boba"
},
"companyName": {
"type": "string",
"example": "ironclad"
},
"displayName": {
"type": "string",
"example": "Boba Fett"
}
}
}
InboundAttachmentModel
{
"type": "object",
"properties": {
"download": {
"type": "string",
"example": "/public/api/v1/workflows/6013609108b8f070cee94fc1/emails/z_1zgjgjq/attachments/attachmentIdc85d7e3be5d84bf28cebe4591e39c894"
},
"filename": {
"type": "string",
"example": "file.docx"
},
"content-type": {
"type": "string",
"example": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
}
}
}
InboundEmailResponse
{
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "6372b491abd2adf22f6e13ff"
},
"body": {
"type": "string",
"example": "This is a body of an email.\\n"
},
"type": {
"enum": [
"inboundEmail"
],
"type": "string"
},
"author": {
"$ref": "#/components/schemas/ActivityAuthorModel"
},
"subject": {
"type": "string",
"example": "This is the subject of an email"
},
"timestamp": {
"type": "string",
"example": "2022-09-28T19:21:05.034Z"
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InboundAttachmentModel"
}
},
"emailThreadId": {
"type": "string",
"example": "emailThread16ca903a0ec44ae09fc0b3fb3339ffa0"
}
}
}
InternalUserModel
{
"type": "object",
"required": [
"type",
"displayName",
"email",
"userId",
"companyName"
],
"properties": {
"type": {
"enum": [
"internalUser"
],
"type": "string",
"example": "internalUser"
},
"email": {
"type": "string",
"example": "boba@ironclad.boba"
},
"userId": {
"type": "string",
"example": "63d415e0dd0d828c3a878548"
},
"companyName": {
"type": "string",
"example": "Ironclad"
},
"displayName": {
"type": "string",
"example": "Boba Fett"
}
}
}
LaunchedWorkflowModel
{
"type": "object",
"required": [
"id",
"title",
"template",
"step",
"attributes",
"schema",
"isCancelled",
"isComplete",
"status",
"created",
"lastUpdated",
"roles",
"approvals",
"signatures",
"isRevertibleToReview"
],
"properties": {
"id": {
"type": "string",
"example": "6013609108b8f070cee94fc1",
"readOnly": true,
"description": "The ID of the launched workflow."
},
"step": {
"enum": [
"Review",
"Sign",
"Archive",
"Complete"
],
"type": "string",
"example": "Review",
"readOnly": true,
"description": "The step the workflow is currently on."
},
"roles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WorkflowRoleModel"
},
"readOnly": true
},
"title": {
"type": "string",
"example": "Consulting Agreement with Jane Doe",
"readOnly": true,
"description": "The name used for the launched workflow."
},
"schema": {
"$ref": "#/components/schemas/AttributesModel"
},
"status": {
"enum": [
"active",
"paused",
"cancelled",
"completed"
],
"type": "string",
"example": "active",
"readOnly": true,
"description": "The current status of the launched workflow."
},
"created": {
"type": "string",
"example": "2016-11-17T00:37:22.318Z",
"readOnly": true,
"description": "The date (ISO8601 format) the workflow was launched"
},
"creator": {
"type": "object",
"title": "",
"readOnly": true,
"properties": {
"id": {
"type": "string",
"example": "63d415e0dd0d828c3a878548",
"readOnly": true,
"description": ""
},
"email": {
"type": "string",
"example": "fett@intergalactic.com",
"readOnly": true,
"description": ""
},
"displayName": {
"type": "string",
"example": "Boba Fett",
"readOnly": true,
"description": ""
}
},
"description": ""
},
"template": {
"$ref": "#/components/schemas/WorkflowTemplateIdModel"
},
"approvals": {
"type": "object",
"properties": {
"state": {
"enum": [
"not_started",
"in_progress",
"completed",
"not_applicable"
],
"type": "string",
"example": "in_progress",
"readOnly": true,
"description": "The state of the approvals."
}
}
},
"recordIds": {
"type": "array",
"items": {
"type": "string",
"example": "715f1e37-292f-4e6c-8b48-c07e1b68bccd",
"description": "Ids of records created by the workflow."
},
"readOnly": true
},
"ironcladId": {
"type": "string",
"example": "IC-1",
"readOnly": true,
"description": "The Ironclad ID of the launched workflow."
},
"isComplete": {
"type": "boolean",
"example": false,
"readOnly": true,
"deprecated": true,
"description": "Displays if the launched workflow has been completed."
},
"signatures": {
"type": "object",
"properties": {
"url": {
"type": "string",
"example": "https://ironcladapp.com/public/api/v1/workflows/6dac47a10b1242d1f7df688d/signatures",
"readOnly": true,
"description": "The url where signature information is located if it exists."
},
"state": {
"enum": [
"not_started",
"in_progress",
"complete",
"not_applicable"
],
"type": "string",
"example": "in_progress",
"readOnly": true,
"description": "The state of the signatures."
}
}
},
"isCancelled": {
"type": "boolean",
"example": false,
"readOnly": true,
"deprecated": true,
"description": "Displays if the launched workflow has been cancelled."
},
"lastUpdated": {
"type": "string",
"example": "2016-11-17T00:37:42.318Z",
"readOnly": true,
"description": "The date (ISO8601 format) the workflow was last updated"
},
"isRevertibleToReview": {
"type": "boolean",
"example": false,
"readOnly": true,
"description": "Displays if the launched workflow can be reverted back to the review step."
}
},
"description": "The response from a successful workflow launch."
}
OutboundAttachmentModel
{
"type": "object",
"properties": {
"download": {
"type": "string",
"example": "/public/api/v1/workflows/6013609108b8f070cee94fc1/document/XZ9j0cHGA/download"
},
"filename": {
"type": "string",
"example": "attachment.pdf"
},
"content-type": {
"type": "string",
"example": "application/pdf"
}
}
}
OutboundEmailResponse
{
"type": "object",
"properties": {
"cc": {
"type": "array",
"items": {
"type": "string",
"example": "admiral@ironclad.boba"
}
},
"id": {
"type": "string",
"example": "6372b491abd2adf22f6e13ff"
},
"body": {
"type": "string",
"example": "This is a body of an email.\\n"
},
"type": {
"enum": [
"outboundEmail"
],
"type": "string"
},
"author": {
"$ref": "#/components/schemas/ActivityAuthorModel"
},
"subject": {
"type": "string",
"example": "This is the subject of an email"
},
"timestamp": {
"type": "string",
"example": "2022-09-28T19:21:05.034Z"
},
"recipients": {
"type": "array",
"items": {
"type": "string",
"example": "dopstop@ironclad.boba"
}
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OutboundAttachmentModel"
}
},
"emailOpenedTimestamps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"email": {
"type": "string",
"example": "david@boba.com"
},
"opened": {
"type": "boolean"
}
}
}
}
}
}
RecordModel
{
"type": "object",
"properties": {
"id": {
"type": "string",
"example": "22e2ff72-56a1-4711-a4ca-41328d311e9f"
},
"name": {
"type": "string",
"example": "Consulting Agreement with Jane Doe"
},
"type": {
"type": "string",
"example": "consultingAgreement"
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recordId": {
"type": "string",
"example": "df1c2805-f5a3-4a14-9386-c28d950dff49"
}
}
}
},
"source": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "workflow"
},
"workflowId": {
"type": "string",
"example": "abcd1234"
}
}
},
"childIds": {
"type": "array",
"items": {
"type": "string",
"example": "4a785686-d3d5-47bc-960e-3df0df871ea9"
}
},
"parentId": {
"type": "string",
"example": "d10b8c01-5c54-4a59-82cb-51e3825182e9"
},
"ironcladId": {
"type": "string",
"example": "IC-1"
},
"properties": {
"type": "object",
"properties": {
"hourlyRate": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "monetaryAmount"
},
"value": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"default": 0,
"example": 100
},
"currency": {
"type": "string",
"example": "USD"
}
}
}
}
},
"agreementDate": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "date"
},
"value": {
"type": "string",
"example": "2018-05-08T00:00:00-07:00"
}
}
},
"counterpartyName": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "string"
},
"value": {
"type": "string",
"example": "Jane Doe"
}
}
},
"counterpartyEmail": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "email"
},
"value": {
"type": "string",
"example": "jane.doe@test.com"
}
}
}
}
},
"attachments": {
"type": "object",
"properties": {
"signedCopy": {
"type": "object",
"properties": {
"href": {
"type": "string",
"example": "https://ironcladapp.com/public/api/v1/records/22e2ff72-56a1-4711-a4ca-41328d311e9f/attachments/signedCopy"
},
"filename": {
"type": "string",
"example": "2018-05-08 - Doe, Jane - Consulting Agreement.pdf"
},
"contentType": {
"type": "string",
"example": "application/json"
}
}
}
}
},
"lastUpdated": {
"type": "string",
"example": "2018-05-08T17:28:10Z"
}
}
}
RecordPropertyLinkModel
{
"type": "object",
"properties": {
"recordId": {
"type": "string",
"example": "17009e0d-z2e9-425d-a85b-1cf152773e49"
}
}
}
RecordsCreateAttachment400Response
{
"oneOf": [
{
"$ref": "#/components/schemas/BadRequestErrorRecordNotFound"
},
{
"$ref": "#/components/schemas/BadRequestErrorRecordAttachmentExtension"
},
{
"$ref": "#/components/schemas/BadRequestErrorRecordAttachmentAlreadyExists"
},
{
"$ref": "#/components/schemas/BadRequestErrorRecordAttachmentUnknownAttachmentKey"
},
{
"$ref": "#/components/schemas/BadRequestErrorRecordAttachmentUnknownContentType"
},
{
"$ref": "#/components/schemas/BadRequestErrorRecordAttachmentMissingFormDataPart"
}
]
}
RecordsCreateAttachmentRequest
{
"type": "object",
"properties": {
"metadata": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"example": "NDA - Acme LLC.pdf",
"description": "The name of the file. Must have a supported file extension (.adoc, .asice, .bdoc, .csv, .ddoc, .doc, .docx, .edoc, .eml, .gif, .htm, .jpeg, .jpg, .msg, .pdf, .png, .ppt, .pptx, .rtf,.tif, .txt, .xls, .xlsx, .xml)."
}
},
"description": "The `metadata` property's value must be `{\"filename\": \"[YOUR_FILE_NAME]\"}`"
},
"attachment": {
"type": "string",
"format": "binary",
"description": "Must be a binary. Base64 is not accepted at this time."
}
}
}
RecordsCreateAttachmentResponse
{
"type": "object",
"properties": {}
}
RecordsCreateRecordRequest
{
"type": "object",
"required": [
"type",
"name",
"properties"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the record."
},
"type": {
"type": "string",
"description": "The type of record to be created. You can view available record types by retrieving records metadata."
},
"links": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RecordPropertyLinkModel"
}
},
"parent": {
"type": "object",
"properties": {
"recordId": {
"type": "string",
"example": "17009e0d-z2e9-425d-a85b-1cf152773efg"
}
},
"description": "Object containing Record IDs or Ironclad IDs to be set as the parent of the current record."
},
"children": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RecordPropertyLinkModel"
},
"description": "List of objects containing the Record IDs or Ironclad IDs of the records to be set as child records of the current record."
},
"properties": {
"type": "object",
"properties": {
"agreementDate": {
"type": "object",
"properties": {
"type": {
"type": "string",
"default": "date"
},
"value": {
"type": "string",
"description": "UTC date (e.g. `2018-05-08T00:00:00-07:00`)"
}
},
"description": "The date of the agreement."
},
"counterpartyName": {
"type": "object",
"properties": {
"type": {
"type": "string",
"default": "string"
},
"value": {
"type": "string",
"description": "The name of the counterparty."
}
},
"description": "The name of the counterparty."
}
},
"description": "Object containing key/value pairs of metadata attached to the record. The key you specify must have a value with a supported type as outlined in the Supported Property Types section."
}
}
}
RecordsCreateRecordResponse
{
"type": "object",
"properties": {
"code": {
"type": "string"
},
"param": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
RecordsDeleteRecord400Response
{
"type": "object",
"properties": {}
}
RecordsDeleteRecordResponse
{
"type": "object",
"properties": {}
}
RecordsGetAttachment400Response
{
"type": "object",
"properties": {}
}
RecordsGetAttachmentResponse
{
"type": "object",
"properties": {}
}
RecordsGetPredictions400Response
{
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
RecordsGetPredictions403Response
{
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
RecordsGetPredictions404Response
{
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
RecordsGetPredictionsResponse
{
"oneOf": [
{
"type": "object",
"items": {
"type": "object",
"properties": {
"status": {
"enum": [
"ready",
"pending",
"errored"
],
"type": "string"
},
"recordId": {
"type": "string",
"example": "df1c2805-f5a3-4a14-9386-c28d950dff49"
}
}
},
"example": {
"status": "ready",
"recordId": "461aa9a3-5984-4553-b8ab-56a1786c2f44"
}
},
{
"type": "array",
"items": {
"type": "object",
"properties": {
"status": {
"enum": [
"ready",
"pending",
"errored"
],
"type": "string"
},
"recordId": {
"type": "string",
"example": "df1c2805-f5a3-4a14-9386-c28d950dff49"
}
}
},
"example": [
{
"status": "ready",
"recordId": "461aa9a3-5984-4553-b8ab-56a1786c2f44"
},
{
"status": "pending",
"recordId": "6392dd09-814d-4def-97d9-8fe8badcf6ce"
}
]
}
]
}
RecordsGetRecordDataResponse
{
"type": "object",
"properties": {}
}
RecordsGetSchema400Response
{
"type": "object",
"properties": {}
}
RecordsGetSchemaResponse
{
"type": "object",
"properties": {
"links": {
"type": "object",
"properties": {}
},
"properties": {
"type": "object",
"properties": {
"workflowId": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "string"
},
"visible": {
"type": "boolean",
"default": true,
"example": true
},
"displayName": {
"type": "string",
"example": "Workflow ID"
}
}
},
"agreementDate": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "date"
},
"visible": {
"type": "boolean",
"default": true,
"example": true
},
"displayName": {
"type": "string",
"example": "Agreement Date"
}
}
},
"additionalNotes": {
"type": "object",
"properties": {
"type": {
"type": "string",
"example": "string"
},
"visible": {
"type": "boolean",
"default": true,
"example": true
},
"displayName": {
"type": "string",
"example": "Additional Notes"
}
}
}
}
},
"attachments": {
"type": "object",
"properties": {
"signedCopy": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"example": "Signed PDF"
}
}
}
}
},
"recordTypes": {
"type": "object",
"properties": {
"contract": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"example": "Contract"
}
}
}
}
}
}
}
RecordsGetXlsxExportFile400Response
{
"type": "object",
"properties": {}
}
RecordsGetXlsxExportFileResponse
{
"type": "object",
"properties": {}
}
| Version | Endpoints | Schemas | Ingested | Status |
|---|---|---|---|---|
| 1 | 41 | 142 | 2026-05-11 | current |
| 1 | 41 | 142 | 2026-04-16 |