Download OpenAPI specification:
This is the documentation for the EchoMark Public REST API. The EchoMark API requires that you have an existing EchoMark account, and that you have an API Client created within your EchoMark account. Administrators can create an API Client within the EchoMark web application EchoMark Public Rest API Implementation Guide.
All API endpoints require a JWT token to authenticate with. To get a JWT token for authentication, call the following endpoint with your client Id and client secret:
POST https://api.echomark.com/auth/oauth2/token
HEADERS: {
Authorization: Basic <Base64(ClientId:ClientSecret)>
}
BODY (x-www-form-urlencoded): {
grant_type: client_credentials,
audience: https://api.echomark.com/api,
resource: https://api.echomark.com/api
}
This will return an access token in the JSON response, or will return an error.
Once you have your token, you can add it as an authorization header for all of your requests to the EchoMark api:
Authorization: Bearer <AccessToken>
Please contact https://support.echomark.com if you have any questions or difficulty with the API.
Returns a single URL for small files, or a set of part URLs for multi-part uploads, based on fileSizeInMb.
| fileSizeInMb required | number > 0 The size of the file in megabytes |
{- "fileSizeInMb": 1
}{- "uploadId": "00000000-0000-0000-0000-000000000000",
- "provider": "AWS",
}Provide the upload ID that was used to generate the presigned URL.
| uploadId required | string <uuid> ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA... The original upload ID returned by a call to |
| mediaType required | string The media type of the file. EchoMark can mark the following types: |
| fileName required | string The name of the file being uploaded |
| uploadType | string Enum: "ORIGINAL" "ANALYSIS" "NOT_MARKABLE_ORIGINAL" The type of upload being performed |
| artifactType | string Enum: "SOURCE" "IMAGE" "TEXT" If the type is "Analysis" then this should describe the type of artifact being uploaded |
Array of objects | |
| fileShareLinkId | string The link Id if this was a shared Secure View document |
{- "uploadId": "ef523ba8-509e-47af-8e2c-5fa751596497",
- "mediaType": "application/pdf",
- "fileName": "string",
- "uploadType": "ORIGINAL",
- "artifactType": "SOURCE",
- "parts": [
- {
- "partId": "string",
- "providerToken": "string"
}
], - "fileShareLinkId": "string"
}{- "originalId": "00000000-0000-0000-0000-000000000000",
- "analysisId": "00000000-0000-0000-0000-000000000000"
}Gets a list of pre-signed URLs, one for each file in the request body.
required | Array of objects |
{- "requests": [
- {
- "fileId": "string",
- "fileSizeInMb": 1
}
]
}{- "results": [
- {
- "fileId": "file1",
- "httpStatusCode": "200",
- "uploadId": "00000000-0000-0000-0000-000000000000",
- "provider": "AWS",
}
]
}Provide the upload Id that was used to generate each pre-signed URL.
required | Array of objects |
{- "requests": [
- {
- "uploadId": "ef523ba8-509e-47af-8e2c-5fa751596497",
- "mediaType": "application/pdf",
- "fileName": "string",
- "parts": [
- {
- "partId": "string",
- "providerToken": "string"
}
]
}
]
}{- "results": [
- {
- "uploadId": "00000000-0000-0000-0000-000000000000",
- "httpStatusCode": "200"
}
]
}Provide the upload Id(s) that were used to generate the pre-signed URLs. Original ID is only included when the status is COMPLETED.
required | Array of objects |
{- "requests": [
- {
- "uploadId": "string"
}
]
}{- "results": [
- {
- "uploadId": "00000000-0000-0000-0000-000000000000",
- "httpStatusCode": "200",
- "uploadSessionStatus": "COMPLETION_PENDING",
- "uploadSessionStatusMessage": "string",
- "originalId": "00000000-0000-0000-0000-000000000000"
}
]
}Each recipient receives a unique marked copy of the original.
| originalId required | string <uuid> ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA... The original ID that was returned by a call to |
| recipients required | Array of strings The recipient(s) that will be receiving the marked copy(ies). If there is more than one recipient listed, each recipient will get a unique marked copy. |
| markingPolicyId | string <uuid> ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA... The marking policy ID to use. If none is supplied, the default marking policy will be used. |
{- "originalId": "79a226e4-4741-4758-a168-c02ba021e138",
- "recipients": [
- "string"
], - "markingPolicyId": "9f56dda2-5570-4751-a9ff-4203724629a5"
}[- {
- "markedCopyId": "00000000-0000-0000-0000-000000000000",
- "status": "PENDING",
- "originalId": "00000000-0000-0000-0000-000000000000",
- "recipient": "foo@example.com"
}
]Returns a status, and a download URL once one is available.
| markedCopyId required | string <uuid> The markedCopyId path parameter. |
{- "markedCopyId": "00000000-0000-0000-0000-000000000000",
- "originalId": "00000000-0000-0000-0000-000000000000",
- "status": "PENDING",
}Creates a sharing link that lets recipients view the original in Secure View, subject to the supplied access settings.
| originalId required | string <uuid> The originalId path parameter. |
| markingPolicyId | string <uuid> ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA... The marking policy ID to use. If none is supplied, the default marking policy will be used. |
| allowDownload | boolean Whether the link should allow downloading the file. |
| downloadAutomatically | boolean Whether the link should automatically download the file instead of showing it in the viewer. |
| inactiveSessionTimeoutMinutes | integer [ 0 .. 9007199254740991 ] The number of minutes of idle time before the user is logged out from viewing the document. |
| expirationDate | string <date-time> The date at which the link will expire. |
object |
{- "markingPolicyId": "9f56dda2-5570-4751-a9ff-4203724629a5",
- "allowDownload": true,
- "downloadAutomatically": true,
- "inactiveSessionTimeoutMinutes": 0,
- "expirationDate": "2026-01-01T00:00:00.000Z",
- "access": {
- "accessLevel": "VERIFIED_EMAIL",
- "allowedEmailsToAdd": [
- "user@example.com"
]
}
}{- "linkId": "00000000-0000-0000-0000-000000000000",
- "originalId": "00000000-0000-0000-0000-000000000000",
}Returns the current settings and access list for a sharing link.
| linkId required | string <uuid> The linkId path parameter. |
{- "linkId": "00000000-0000-0000-0000-000000000000",
- "originalId": "00000000-0000-0000-0000-000000000000",
- "markingPolicyId": "00000000-0000-0000-0000-000000000000",
- "allowDownload": true,
- "downloadAutomatically": true,
- "inactiveSessionTimeoutMinutes": 0,
- "expirationDate": "2026-01-01T00:00:00.000Z",
- "access": {
- "accessLevel": "VERIFIED_EMAIL",
- "allowedEmails": [
- "user@example.com"
]
}, - "createdAt": "2026-01-01T00:00:00.000Z",
- "updatedAt": "2026-01-01T00:00:00.000Z"
}Updates access, download, expiration, or marking-policy settings for an existing sharing link.
| linkId required | string <uuid> The linkId path parameter. |
string or null The marking policy ID to use. If none is supplied, the default marking policy will be used. | |
| allowDownload | boolean Whether the link should allow downloading the file. |
| downloadAutomatically | boolean Whether the link should automatically download the file instead of showing it in the viewer. |
| inactiveSessionTimeoutMinutes | integer [ 0 .. 9007199254740991 ] The number of minutes of idle time before the user is logged out from viewing the document. |
string or null <date-time> The date at which the link will expire. | |
object |
{- "markingPolicyId": "9f56dda2-5570-4751-a9ff-4203724629a5",
- "allowDownload": true,
- "downloadAutomatically": true,
- "inactiveSessionTimeoutMinutes": 0,
- "expirationDate": "2026-01-01T00:00:00.000Z",
- "access": {
- "accessLevel": "VERIFIED_EMAIL",
- "allowedEmailsToAdd": [
- "user@example.com"
], - "allowedEmailsToRemove": [
- "user@example.com"
]
}
}{- "linkId": "00000000-0000-0000-0000-000000000000",
- "originalId": "00000000-0000-0000-0000-000000000000",
- "markingPolicyId": "00000000-0000-0000-0000-000000000000",
- "allowDownload": true,
- "downloadAutomatically": true,
- "inactiveSessionTimeoutMinutes": 0,
- "expirationDate": "2026-01-01T00:00:00.000Z",
- "access": {
- "accessLevel": "VERIFIED_EMAIL",
- "allowedEmails": [
- "user@example.com"
]
}, - "createdAt": "2026-01-01T00:00:00.000Z",
- "updatedAt": "2026-01-01T00:00:00.000Z"
}