Markup
Markup is the main resource of the MarkUp.io API. Create, get, update, and delete markups (MarkUp projects); list and search by workspace; bulk create, move, and delete.
Create Markup from URL
POST /api/v2/markups/url
This URL should lead to webpage or one of supported types .
curl "https://api.markup.io/api/v2/markups/url" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"url": "https://markup.io",
"name": "My Markup"
}'{
"data": {
"id": "1f23b12d-ef54-4a53-9e46-58371a68e565",
"createdAt": "2026-09-22T11:18:38.209Z",
"modifiedAt": "2026-09-22T11:18:38.209Z",
"type": "webpage",
"name": "MarkUp.io",
"markupUrl": "https://app.markup.io/markup/f289b90a-1166-4f63-aef3-a0cce4543413",
"thumbnailUrl": "https://media.markup.io/thumbnails/markup/9b339cd0-546d-4292-a54b-6e128ce6113e",
"activeThreads": 10,
"readOnly": true,
"status": "editing",
"note": {
"id": "uuid",
"projectId": "uuid",
"note": "Internal note",
"showNoteOnProjectOpen": true
},
"projectReviews": [
{
"projectId": "uuid",
"userId": "uuid",
"comment": "Looks good",
"createdAt": 1705312800000
}
],
"scopes": [
"update-project-read-only",
"delete-project"
],
"retainOriginal": true,
"hasRetainedOriginal": true,
"url": "https://markup.io"
}
}Response Body - MarkupResponse
Request Body CreateUrlMarkupRequest
| Option | Type | |
|---|---|---|
| url | string | |
| name optional | string | If not set the name will be set to the URL hostname. |
| workspaceId optional | string | If not set or empty, the API key's workspace is used. |
| parentFolderId optional | string | Folder id where the markup will be created. If not set, the workspace root folder is used. |
Create Markup from file
POST /api/v2/markups/file
Create a markup from a single file in one of supported types .
The endpoint takes a POST Content-Type: multipart/form-data request with one file field. The whole request must be under 20MB.
For larger files, and to put several images in one markup, use the upload flow and Create Markup from files.
curl "https://api.markup.io/api/v2/markups/file?workspaceId=123e4567-e89b-12d3-a456-426655440000" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: multipart/form-data" \
-F 'file=@/path/to/pictures/picture.jpg'{
"data": {
"id": "91a878b7-6f88-487f-96e4-88095847108a",
"createdAt": "2026-09-22T11:18:38.210Z",
"modifiedAt": "2026-09-22T11:18:38.210Z",
"type": "webpage",
"name": "MarkUp.io",
"markupUrl": "https://app.markup.io/markup/f289b90a-1166-4f63-aef3-a0cce4543413",
"thumbnailUrl": "https://media.markup.io/thumbnails/markup/9b339cd0-546d-4292-a54b-6e128ce6113e",
"activeThreads": 10,
"readOnly": true,
"status": "editing",
"note": {
"id": "uuid",
"projectId": "uuid",
"note": "Internal note",
"showNoteOnProjectOpen": true
},
"projectReviews": [
{
"projectId": "uuid",
"userId": "uuid",
"comment": "Looks good",
"createdAt": 1705312800000
}
],
"scopes": [
"update-project-read-only",
"delete-project"
],
"retainOriginal": true,
"hasRetainedOriginal": true,
"url": "https://markup.io"
}
}Response Body - MarkupResponse
Request Query Params CreateFileMarkupRequest
| Option | Type | |
|---|---|---|
| name optional | string | If not set the name will default based on URL or file name. |
| workspaceId | string | |
| parentFolderId optional | string | Folder id where the markup will be created. If not set, the workspace root folder is used. |
Create Markup from files
POST /api/v2/markups/from-files
Create a markup from files already uploaded through the upload flow.
Upload each file first (POST /uploads/upload-policy -> POST the bytes as a form to the returned presigned URL -> POST /uploads/upload-complete), then pass the resulting fileIds here.
A file there is bounded by the workspace’s remaining storage allowance rather than by a fixed per-file cap, so it is also the way to use a file too large for Create Markup from file.
Several images (png, jpeg, gif, bmp, webp, svg) become one multi-page markup, and the order of fileIds is the order they appear in.
A PDF, a video, or an image needing conversion (tiff, psd, eps) makes a markup of its own, so send exactly one fileId and do not mix it with others.
Every file must belong to this workspace and can be used only once.
curl "https://api.markup.io/api/v2/markups/from-files" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"workspaceId": "123e4567-e89b-12d3-a456-426655440000",
"fileIds": ["3f1b9d2e-1c4a-4b7e-9a1d-2c5e8f0a7b31", "8c2a4e6f-5d3b-4a1c-8e9f-0b7d6c3a2e14"],
"name": "Homepage review"
}'{
"data": {
"id": "59f0a8a4-001f-4929-900a-d340895af796",
"createdAt": "2026-09-22T11:18:38.210Z",
"modifiedAt": "2026-09-22T11:18:38.210Z",
"type": "webpage",
"name": "MarkUp.io",
"markupUrl": "https://app.markup.io/markup/f289b90a-1166-4f63-aef3-a0cce4543413",
"thumbnailUrl": "https://media.markup.io/thumbnails/markup/9b339cd0-546d-4292-a54b-6e128ce6113e",
"activeThreads": 10,
"readOnly": true,
"status": "editing",
"note": {
"id": "uuid",
"projectId": "uuid",
"note": "Internal note",
"showNoteOnProjectOpen": true
},
"projectReviews": [
{
"projectId": "uuid",
"userId": "uuid",
"comment": "Looks good",
"createdAt": 1705312800000
}
],
"scopes": [
"update-project-read-only",
"delete-project"
],
"retainOriginal": true,
"hasRetainedOriginal": true,
"url": "https://markup.io"
}
}Response Body - MarkupResponse
Request Body CreateMarkupFromFilesRequest
| Option | Type | |
|---|---|---|
| workspaceId | string | |
| fileIds | string[] | Completed upload IDs. Each one is the |
| name optional | string | If not set, the name defaults to the first file's name without its extension. |
| parentFolderId optional | string | Folder id where the markup will be created. If not set, the workspace root folder is used. |
Search Markups
GET /api/v2/markups/search
Search markups in workspace by name or URL (includes subfolders).
Returns metadata only by default; pass include=media to attach every markup’s files, or narrow it to
include=images, videos or documents.
curl "https://api.markup.io/api/v2/markups/search?workspaceId=afb2496f-a18f-4392-871d-94ff9f9e7573&include=media" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"data": [
{}
]
}
}Response Body ListMarkupResponse
| Option | Type | |
|---|---|---|
| data | T[] |
Request Query Params SearchMarkupsQuery
| Option | Type | |
|---|---|---|
| workspaceId | string | |
| query optional | string | |
| limit optional | number | |
| include optional | string | Comma-separated file payloads to expand, omitted by default because a page of markups can carry thousands of images. |
Get Markup Usage
GET /api/v2/markups/usage
Returns the workspace’s monthly MarkUp usage: scope, allowance, used, remaining, reset date and warning/limit flags.
limit, remaining and totalRemaining are null on an unlimited plan. used counts MarkUps charged to the plan allowance and
bundleUsed those charged to a purchased bundle, so the total created this period is used + bundleUsed.
curl "https://api.markup.io/api/v2/markups/usage" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"scope": "Workspace",
"used": 42,
"bundleUsed": 0,
"limit": 100,
"remaining": 58,
"isUnlimited": false,
"enforcementEnabled": true,
"isCustomOverride": false,
"warningThreshold": 0.8,
"isWarning": false,
"isLimitReached": false,
"bundleBalance": 0,
"totalRemaining": 58,
"isDrawingOnBundle": false,
"averageMonthlyUsage": null,
"periodStart": "2023-02-01T00:00:00.000Z",
"periodEnd": "2023-03-01T00:00:00.000Z"
}
}Get Markup
GET /api/v2/markups/:id
curl "https://api.markup.io/api/v2/markups/16f443c1-7f28-4742-ac1b-d75e7f5cd180" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"id": "ec13e7fd-7d90-453c-978d-4a4afeef647d",
"createdAt": "2026-09-22T11:18:38.210Z",
"modifiedAt": "2026-09-22T11:18:38.210Z",
"type": "webpage",
"name": "MarkUp.io",
"markupUrl": "https://app.markup.io/markup/f289b90a-1166-4f63-aef3-a0cce4543413",
"thumbnailUrl": "https://media.markup.io/thumbnails/markup/9b339cd0-546d-4292-a54b-6e128ce6113e",
"activeThreads": 10,
"readOnly": true,
"status": "editing",
"note": {
"id": "uuid",
"projectId": "uuid",
"note": "Internal note",
"showNoteOnProjectOpen": true
},
"projectReviews": [
{
"projectId": "uuid",
"userId": "uuid",
"comment": "Looks good",
"createdAt": 1705312800000
}
],
"scopes": [
"update-project-read-only",
"delete-project"
],
"retainOriginal": true,
"hasRetainedOriginal": true,
"url": "https://markup.io"
}
}Response Body - MarkupResponse
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Get Markup Tag
GET /api/v2/markups/:id/tag
Returns taggable and tagged users for the markup (project). Same as v1 GET tag/project/:id.
curl "https://api.markup.io/api/v2/markups/6f1ec676-32fa-4193-9854-2693f0f61eb4/tag" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"taggable": [
{}
],
"tagged": [
{
"id": "some id",
"name": "some name",
"email": "some email"
}
]
}
}Response Body ProjectMessageTagsResponse
| Option | Type | |
|---|---|---|
| taggable | TaggableTagsResponse[] | |
| tagged | TaggedUserTagResponse[] |
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
List Markup View Modes
GET /api/v2/markups/:id/view-modes
Returns the available view modes (device breakpoints) for a markup, with per-mode thread counts.
curl "https://api.markup.io/api/v2/markups/2b0249d8-3736-44fb-8878-68122ca9e890/view-modes" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" 204 No ContentRequest Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
List All Markups
GET /api/v2/markups
Cursor-based pagination. Use since for next page, before for previous. Order: createdAt desc.
Returns metadata only by default; pass include=media to attach every markup’s files, or narrow it to
include=images, videos or documents. isReady is always reported, so a caller can tell a markup
still being converted from one with no files.
curl "https://api.markup.io/api/v2/markups?workspaceId=eaf7ff36-aad8-4f1b-8b4e-3f7d82ae7b82&include=media" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"data": [
{}
],
"hasMore": true
}
}Response Body ListMarkupPaginatedResponse
| Option | Type | |
|---|---|---|
| data | ||
| hasMore | boolean | |
| nextCursor | string | |
| prevCursor | string |
Request Query Params ListMarkupsQuery
| Option | Type | |
|---|---|---|
| workspaceId | string | |
| limit optional | number | |
| since optional | string | |
| before optional | string | |
| ttl optional | number | |
| include optional | string | Comma-separated file payloads to expand, omitted by default because a page of markups can carry thousands of images. |
Update Markup
POST /api/v2/markups/:id
curl "https://api.markup.io/api/v2/markups/06a8f372-feda-4943-8a54-d66455ec6813" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"name": "MarkUp.io"
}'{
"data": {
"id": "39fb2dbb-c1b4-49e2-b50e-834090024377",
"createdAt": "2026-09-22T11:18:38.210Z",
"modifiedAt": "2026-09-22T11:18:38.210Z",
"type": "webpage",
"name": "MarkUp.io",
"markupUrl": "https://app.markup.io/markup/f289b90a-1166-4f63-aef3-a0cce4543413",
"thumbnailUrl": "https://media.markup.io/thumbnails/markup/9b339cd0-546d-4292-a54b-6e128ce6113e",
"activeThreads": 10,
"readOnly": true,
"status": "editing",
"note": {
"id": "uuid",
"projectId": "uuid",
"note": "Internal note",
"showNoteOnProjectOpen": true
},
"projectReviews": [
{
"projectId": "uuid",
"userId": "uuid",
"comment": "Looks good",
"createdAt": 1705312800000
}
],
"scopes": [
"update-project-read-only",
"delete-project"
],
"retainOriginal": true,
"hasRetainedOriginal": true,
"url": "https://markup.io"
}
}Response Body - MarkupResponse
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Request Body UpdateMarkupRequest
| Option | Type | |
|---|---|---|
| name | string |
Pause or Resume New Comments
PATCH /api/v2/markups/:id/read-only
Pauses or resumes new comments on the markup by toggling its readOnly state.
Pausing requires a plan with pauseCommentsEnabled; resuming is always allowed.
curl "https://api.markup.io/api/v2/markups/2b98618d-0760-487f-859b-8c2d5aca9ba4/read-only" \
-X PATCH \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"readOnly": true
}'{
"data": {
"id": "5afcca3b-3ccc-49e2-a5af-da26697c1fe1",
"createdAt": "2026-09-22T11:18:38.210Z",
"modifiedAt": "2026-09-22T11:18:38.210Z",
"type": "webpage",
"name": "MarkUp.io",
"markupUrl": "https://app.markup.io/markup/f289b90a-1166-4f63-aef3-a0cce4543413",
"thumbnailUrl": "https://media.markup.io/thumbnails/markup/9b339cd0-546d-4292-a54b-6e128ce6113e",
"activeThreads": 10,
"readOnly": true,
"status": "editing",
"note": {
"id": "uuid",
"projectId": "uuid",
"note": "Internal note",
"showNoteOnProjectOpen": true
},
"projectReviews": [
{
"projectId": "uuid",
"userId": "uuid",
"comment": "Looks good",
"createdAt": 1705312800000
}
],
"scopes": [
"update-project-read-only",
"delete-project"
],
"retainOriginal": true,
"hasRetainedOriginal": true,
"url": "https://markup.io"
}
}Response Body - MarkupResponse
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Request Body UpdateMarkupReadOnlyRequest
| Option | Type | |
|---|---|---|
| readOnly | boolean |
Download Original File
GET /api/v2/markups/:id/original/download-url
Returns a short-lived presigned URL to download the markup’s retained original file.
Only available for markups created from a file whose original is still kept (see hasRetainedOriginal).
Returns 404 when no retained original exists.
curl "https://api.markup.io/api/v2/markups/e8fe7179-60de-4ea8-8089-442c283b9a22/original/download-url" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"url": "some url",
"filename": "some filename",
"mimeType": "some mimeType",
"filesize": 123
}
}Response Body OriginalDownloadUrlResponse
| Option | Type | |
|---|---|---|
| url | string | |
| filename | string | |
| mimeType | string | |
| filesize | number |
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Keep or Archive Original File
PATCH /api/v2/markups/:id/original
Sets the per-markup original-file retention override. retainOriginal: true keeps the
original even when the workspace’s storage policy is NEVER_STORE; false archives it. An original
that has already been archived cannot be re-retained (returns 400). Returns the updated markup.
curl "https://api.markup.io/api/v2/markups/65832759-93da-4c4c-bb0a-bec4f1db6ca4/original" \
-X PATCH \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"retainOriginal": true
}'{
"data": {
"id": "b0421d3b-086e-402e-9e98-e0076eacd43b",
"createdAt": "2026-09-22T11:18:38.210Z",
"modifiedAt": "2026-09-22T11:18:38.210Z",
"type": "webpage",
"name": "MarkUp.io",
"markupUrl": "https://app.markup.io/markup/f289b90a-1166-4f63-aef3-a0cce4543413",
"thumbnailUrl": "https://media.markup.io/thumbnails/markup/9b339cd0-546d-4292-a54b-6e128ce6113e",
"activeThreads": 10,
"readOnly": true,
"status": "editing",
"note": {
"id": "uuid",
"projectId": "uuid",
"note": "Internal note",
"showNoteOnProjectOpen": true
},
"projectReviews": [
{
"projectId": "uuid",
"userId": "uuid",
"comment": "Looks good",
"createdAt": 1705312800000
}
],
"scopes": [
"update-project-read-only",
"delete-project"
],
"retainOriginal": true,
"hasRetainedOriginal": true,
"url": "https://markup.io"
}
}Response Body - MarkupResponse
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Request Body UpdateMarkupOriginalRequest
| Option | Type | |
|---|---|---|
| retainOriginal | boolean |
Archive Original File
DELETE /api/v2/markups/:id/original
Archives the markup’s retained original file (queues it for deletion from storage) and returns the archived file size. Returns 404 when no retained original exists.
curl "https://api.markup.io/api/v2/markups/f1994047-e36c-49cd-93a8-7f815100c71a/original" \
-X DELETE \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"archivedFileSize": 123
}
}Response Body ArchiveOriginalResponse
| Option | Type | |
|---|---|---|
| archivedFileSize | number |
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Delete Markup
DELETE /api/v2/markups/:id
curl "https://api.markup.io/api/v2/markups/587daad8-13bf-4161-9924-8db615b44811" \
-X DELETE \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" 204 No ContentRequest Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Bulk Create Markups from URLs
POST /api/v2/markups/bulk/from-url
curl "https://api.markup.io/api/v2/markups/bulk/from-url" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"items": [
{}
]
}'204 No ContentRequest Body BulkCreateMarkupsFromUrlRequest
| Option | Type | |
|---|---|---|
| items | BulkCreateMarkupFromUrlItem[] |
Bulk Create Markups from Files
POST /api/v2/markups/bulk/from-files
Not implemented — the handler always rejects. Kept out of the published docs until it works; to create one markup from several images use Create Markup from files.
curl "https://api.markup.io/api/v2/markups/bulk/from-files" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"items": [
{}
]
}'204 No ContentRequest Body BulkCreateMarkupsFromFilesRequest
| Option | Type | |
|---|---|---|
| items | BulkCreateMarkupFromFileItem[] |
Bulk Move Markups
POST /api/v2/markups/bulk/move
curl "https://api.markup.io/api/v2/markups/bulk/move" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"markupIds": "38b7570e-67fb-4a09-b681-e39319e9c495",
"targetFolderId": "d6a08854-1a38-4969-bc3f-7b15363514ae"
}'204 No ContentRequest Body BulkMoveMarkupsRequest
| Option | Type | |
|---|---|---|
| markupIds | string[] | |
| targetFolderId | string |
Bulk Delete Markups
POST /api/v2/markups/bulk/delete
curl "https://api.markup.io/api/v2/markups/bulk/delete" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"markupIds": "fea57233-a98f-4dc8-9142-39230e0462a6"
}'204 No ContentRequest Body BulkDeleteMarkupsRequest
| Option | Type | |
|---|---|---|
| markupIds | string[] |
Related types
MarkupResponse
| Option | Type | |
|---|---|---|
| MarkupResponse |
WebpageMarkupResponse
| Option | Type | |
|---|---|---|
| id | string | |
| createdAt | Iso8601Timestamp | |
| modifiedAt | Iso8601Timestamp | |
| deletedAt | Iso8601Timestamp | |
| type | ProjectType | |
| name | string | |
| markupUrl | string | |
| thumbnailUrl | string | |
| activeThreads | number | |
| readOnly | boolean | |
| status | ProjectStatus | |
| note | ProjectNoteResponse | |
| projectReviews | ProjectReviewResponse[] | |
| scopes | string[] | |
| retainOriginal | boolean | |
| hasRetainedOriginal | boolean | |
| url | string |
ImageMarkupResponse
| Option | Type | |
|---|---|---|
| id | string | |
| createdAt | Iso8601Timestamp | |
| modifiedAt | Iso8601Timestamp | |
| deletedAt | Iso8601Timestamp | |
| type | ProjectType | |
| name | string | |
| markupUrl | string | |
| thumbnailUrl | string | |
| activeThreads | number | |
| readOnly | boolean | |
| status | ProjectStatus | |
| note | ProjectNoteResponse | |
| projectReviews | ProjectReviewResponse[] | |
| scopes | string[] | |
| retainOriginal | boolean | |
| hasRetainedOriginal | boolean | |
| originalMimeType | string | Mime type of the file the markup was created from, when it differs from the images
themselves (a converted document, for example). Absent for markups built directly from uploaded
images, where the per-image |
| images | MarkupImage[] | The images that make up this markup, in display order. Always present on a single-markup
read; on the list and search endpoints only when |
| isReady | boolean | Some of the files need to be converted before Markup is ready for reviewing.
After the conversion is done, this flag will be set to true and the |
VideoMarkupResponse
| Option | Type | |
|---|---|---|
| id | string | |
| createdAt | Iso8601Timestamp | |
| modifiedAt | Iso8601Timestamp | |
| deletedAt | Iso8601Timestamp | |
| type | ProjectType | |
| name | string | |
| markupUrl | string | |
| thumbnailUrl | string | |
| activeThreads | number | |
| readOnly | boolean | |
| status | ProjectStatus | |
| note | ProjectNoteResponse | |
| projectReviews | ProjectReviewResponse[] | |
| scopes | string[] | |
| retainOriginal | boolean | |
| hasRetainedOriginal | boolean | |
| video | MarkupVideo | The video this markup was created from. Absent until the conversion job has produced it —
check |
| isReady | boolean | Some of the files need to be converted before Markup is ready for reviewing.
After the conversion is done, this flag will be set to true and the |
PdfMarkupResponse
| Option | Type | |
|---|---|---|
| id | string | |
| createdAt | Iso8601Timestamp | |
| modifiedAt | Iso8601Timestamp | |
| deletedAt | Iso8601Timestamp | |
| type | ProjectType | |
| name | string | |
| markupUrl | string | |
| thumbnailUrl | string | |
| activeThreads | number | |
| readOnly | boolean | |
| status | ProjectStatus | |
| note | ProjectNoteResponse | |
| projectReviews | ProjectReviewResponse[] | |
| scopes | string[] | |
| retainOriginal | boolean | |
| hasRetainedOriginal | boolean | |
| document | MarkupDocument | The document this markup was created from. Absent while the upload is still being processed, so a client must not assume it is present. |
| isReady | boolean | Some of the files need to be converted before Markup is ready for reviewing.
After the conversion is done, this flag will be set to true and the |
TaggedUserTagResponse
| Option | Type | |
|---|---|---|
| id | string | |
| name | string | |
| string |