{"id":24095,"date":"2026-08-21T14:06:55","date_gmt":"2026-08-21T08:36:55","guid":{"rendered":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/?post_type=article&#038;p=24095"},"modified":"2026-08-24T09:40:55","modified_gmt":"2026-08-24T04:10:55","slug":"nimble-rest-api-reference-guide","status":"publish","type":"article","link":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/article\/nimble-rest-api-reference-guide\/","title":{"rendered":"Nimble REST API Reference Guide"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>The Nimble REST API lets you interact with your workspace programmatically \u2014 create and update workitems, manage todos, log time, add comments, and more. This guide covers every available endpoint with example requests and responses for use with Postman.<\/p>\n<p><strong>Base URL:<\/strong> <code>https:\/\/api.nimblework.com\/blox\/openapi<\/code><\/p>\n<h2>Getting a Token<\/h2>\n<p style=\"background: #fff8e1; border-left: 4px solid #ffa000; padding: 10px 14px; margin: 12px 0;\">Every API call requires <code>Authorization: Bearer &lt;token&gt;<\/code>. Register a client once, then request a new token whenever your token expires (~1 hour).<\/p>\n<h3>Step 1 \u2014 Register an API Client in Nimble<\/h3>\n<ol>\n<li>Log in to your Nimble instance.<\/li>\n<li>In the left sidebar, click <strong>Account Space<\/strong>.<\/li>\n<li>In the top nav, click <strong>Administration<\/strong> \u2192 <strong>REST API Client<\/strong>.<\/li>\n<li>Click <strong>+ REGISTER<\/strong> (top right).<\/li>\n<li>Enter a <strong>Client Name<\/strong>. The <strong>Client ID<\/strong> is auto-generated \u2014 copy it.<\/li>\n<li>Expand <strong>Workspace Access Permissions<\/strong> and tick the permissions you need (Read Card, Create Card, Update Card, etc.).<\/li>\n<li>Click <strong>REGISTER CLIENT<\/strong>. Copy the <strong>Client Secret<\/strong> \u2014 it is shown <strong>only once<\/strong>. Click <strong>DONE<\/strong>.<\/li>\n<\/ol>\n<h3>Step 2 \u2014 Get a Token<\/h3>\n<p><strong>POST<\/strong> <code>https:\/\/api.nimblework.com\/rest\/v1\/oauth\/token<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Body \u00b7 raw \u00b7 JSON<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"grant_type\": \"client_credentials\",\r\n  \"client_id\": \"nmb_cli_xxxxxxxxxxxx\",\r\n  \"client_secret\": \"your_client_secret_here\"\r\n}<\/code><\/pre>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"access_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\r\n  \"token_type\": \"Bearer\",\r\n  \"expires_in\": 3600\r\n}<\/code><\/pre>\n<p>Copy the <code>access_token<\/code>. Use it as <code>Bearer &lt;access_token&gt;<\/code> in all subsequent requests.<\/p>\n<h2>Postman Setup<\/h2>\n<p style=\"background: #e8f5e9; border-left: 4px solid #43a047; padding: 10px 14px; margin: 12px 0;\">Create a Postman Environment with these variables so you only set them once:<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Variable<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Example value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">token<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">eyJhbGciOiJSUzI1NiIs\u2026 (paste from Step 2)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">baseUrl<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">https:\/\/api.nimblework.com\/blox\/openapi<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">workspaceId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">2110769<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">correlation<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">INSTANCE:accountId:userId<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Then in every request use <code>{{baseUrl}}<\/code>, <code>{{token}}<\/code>, etc.<\/p>\n<h2>Workspaces<\/h2>\n<h3>GET \u2014 List Workspaces<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/workspaces?limit=10<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Param<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">limit<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Number of results per page (default 50)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">pageToken<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Cursor from previous response for next page<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">sort<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Field to sort by<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">order<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">asc or desc<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"items\": [\r\n    {\r\n      \"workspaceId\": \"2110769\",\r\n      \"name\": \"My First Project\",\r\n      \"description\": \"FromProjectCreate\",\r\n      \"createdBy\": \"353147453\",\r\n      \"modifiedBy\": \"353147453\",\r\n      \"createdAt\": \"2026-08-14T17:12:17Z\"\r\n    }\r\n  ],\r\n  \"total\": 1,\r\n  \"pageToken\": null\r\n}<\/code><\/pre>\n<h3>GET \u2014 Single Workspace<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/workspaces\/:workspaceId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Path Variable<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">workspaceId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">e.g. 2110769<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"workspaceId\": \"2110769\",\r\n  \"name\": \"My First Project\",\r\n  \"description\": \"FromProjectCreate\",\r\n  \"createdBy\": \"353147453\",\r\n  \"modifiedBy\": \"353147453\",\r\n  \"createdAt\": \"2026-08-14T17:12:17Z\",\r\n  \"updatedAt\": \"2026-08-14T17:12:17Z\"\r\n}<\/code><\/pre>\n<h2>Forms<\/h2>\n<p>Forms are the templates that define the fields for instances (workitems). Every instance belongs to a form. The <code>X-WorkspaceId<\/code> header is required for both form endpoints.<\/p>\n<h3>GET \u2014 List Forms<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/forms<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">X-WorkspaceId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">{{workspaceId}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"items\": [\r\n    {\r\n      \"formId\": \"523440\",\r\n      \"name\": \"Issue\",\r\n      \"prefix\": \"ISS\",\r\n      \"workspaceId\": \"2110769\",\r\n      \"hexColorCode\": \"#FF5733\",\r\n      \"custom\": true,\r\n      \"createdAt\": \"2026-01-10T09:00:00Z\",\r\n      \"fields\": [\r\n        { \"fieldUniqueName\": \"Name\",        \"custom\": false, \"readOnly\": false },\r\n        { \"fieldUniqueName\": \"Priority\",     \"custom\": true,  \"readOnly\": false },\r\n        { \"fieldUniqueName\": \"Assigned To\",  \"custom\": true,  \"readOnly\": false },\r\n        { \"fieldUniqueName\": \"Status\",       \"custom\": false, \"readOnly\": true  }\r\n      ]\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<h3>GET \u2014 Single Form (with full field schema)<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/forms\/:formId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">X-WorkspaceId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">{{workspaceId}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Path Variable<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">formId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Numeric form ID, e.g. 523440<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"formId\": \"523440\",\r\n  \"name\": \"Issue\",\r\n  \"prefix\": \"ISS\",\r\n  \"workspaceId\": \"2110769\",\r\n  \"fields\": [\r\n    {\r\n      \"fieldUniqueName\": \"Name\",\r\n      \"custom\": false,\r\n      \"readOnly\": false,\r\n      \"type\": \"TEXT\",\r\n      \"required\": true\r\n    },\r\n    {\r\n      \"fieldUniqueName\": \"Priority\",\r\n      \"custom\": true,\r\n      \"readOnly\": false,\r\n      \"type\": \"LOOKUP\",\r\n      \"required\": false\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<h2>Instances (Workitems)<\/h2>\n<p>An instance is a single workitem (card). Custom field values are sent and received at the root level alongside system fields. Always include <code>formId<\/code> in the request body for writes.<\/p>\n<h3>GET \u2014 List Instances<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances?workspaceId={{workspaceId}}&amp;formId=523440&amp;limit=20<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Param<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">workspaceId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Your workspace ID<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">formId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Filter by form, e.g. 523440<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">expand<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">true \u2014 inlines lookup field values<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">limit<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Max results per page<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">pageToken<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Cursor for next page<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">sort<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Field name to sort by<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">order<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">asc or desc<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"items\": [\r\n    {\r\n      \"instanceId\": \"523440-42\",\r\n      \"id\": \"ISS-42\",\r\n      \"formId\": \"523440\",\r\n      \"workspaceId\": \"2110769\",\r\n      \"Name\": \"Login page broken\",\r\n      \"Priority\": \"High\",\r\n      \"Status\": \"Open\",\r\n      \"createdAt\": \"2026-08-01T10:00:00Z\"\r\n    }\r\n  ],\r\n  \"total\": 1\r\n}<\/code><\/pre>\n<h3>GET \u2014 Single Instance<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances\/:instanceId?expand=true<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Path Variable<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">instanceId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">e.g. ISS-42<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"instanceId\": \"523440-42\",\r\n  \"id\": \"ISS-42\",\r\n  \"formId\": \"523440\",\r\n  \"workspaceId\": \"2110769\",\r\n  \"Name\": \"Login page broken\",\r\n  \"Priority\": \"High\",\r\n  \"Status\": \"Open\",\r\n  \"flags\": [],\r\n  \"blocks\": [],\r\n  \"createdAt\": \"2026-08-01T10:00:00Z\"\r\n}<\/code><\/pre>\n<h3>GET \u2014 Subblocks (child instances)<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/subblocks?depth=-1<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Param<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">depth<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">0 = direct children only \u00b7 -1 = full tree \u00b7 n = n levels<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"items\": [\r\n    { \"instanceId\": \"523440-43\", \"id\": \"ISS-43\", \"Name\": \"Sub-task A\", \"...\": \"...\" }\r\n  ]\r\n}<\/code><\/pre>\n<h3>POST \u2014 Create Instance<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"formId\": \"523440\",\r\n  \"workspaceId\": \"2110769\",\r\n  \"Name\": \"Login page broken\",\r\n  \"Priority\": \"High\",\r\n  \"Assigned To\": \"John Smith\"\r\n}<\/code><\/pre>\n<p style=\"background: #fff8e1; border-left: 4px solid #ffa000; padding: 10px 14px; margin: 12px 0;\"><strong>Note:<\/strong> <code>formId<\/code> and <code>workspaceId<\/code> are required. All other fields are custom fields from the form schema \u2014 use the exact field names returned by <code>GET \/forms\/:formId<\/code>.<\/p>\n<p><strong>Response 201 CREATED<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"instanceId\": \"523440-42\",\r\n  \"id\": \"ISS-42\"\r\n}<\/code><\/pre>\n<p>The <code>Location<\/code> response header also contains the URL of the new instance.<\/p>\n<h3>PUT \u2014 Full Replace<\/h3>\n<p><strong>PUT<\/strong> <code>{{baseUrl}}\/instances\/:instanceId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"formId\": \"523440\",\r\n  \"Name\": \"Login page broken \u2014 updated\",\r\n  \"Priority\": \"Critical\"\r\n}<\/code><\/pre>\n<p style=\"background: #fce4e4; border-left: 4px solid #e53935; padding: 10px 14px; margin: 12px 0;\"><strong>Important:<\/strong> This is a full replacement. Any custom field not included in the body (e.g. <code>Assigned To<\/code>) will be cleared. System fields like <code>Status<\/code>, <code>flags<\/code>, and <code>blocks<\/code> are never cleared by PUT.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"instanceId\": \"523440-42\",\r\n  \"id\": \"ISS-42\",\r\n  \"Name\": \"Login page broken \u2014 updated\",\r\n  \"Priority\": \"Critical\",\r\n  \"Assigned To\": null\r\n}<\/code><\/pre>\n<h3>PATCH \u2014 Partial Update<\/h3>\n<p><strong>PATCH<\/strong> <code>{{baseUrl}}\/instances\/:instanceId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"formId\": \"523440\",\r\n  \"Priority\": \"Low\"\r\n}<\/code><\/pre>\n<p style=\"background: #fff8e1; border-left: 4px solid #ffa000; padding: 10px 14px; margin: 12px 0;\"><strong>Note:<\/strong> Only <code>Priority<\/code> changes. All other fields remain untouched. <code>formId<\/code> is required. Do not send flag or block keys here \u2014 use the dedicated sub-resource endpoints.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"instanceId\": \"523440-42\",\r\n  \"id\": \"ISS-42\",\r\n  \"Priority\": \"Low\"\r\n}<\/code><\/pre>\n<h3>DELETE \u2014 Delete Instance<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 204 NO CONTENT<\/strong> \u2014 Empty body. Returns 404 if the instance has already been deleted.<\/p>\n<h2>Flags<\/h2>\n<p>Only available on instances of STANDALONE form types. Returns 400 for sub-block instances.<\/p>\n<h3>POST \u2014 Flag an Instance<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/flags<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">*\/*<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"comment\": \"Needs immediate attention\"\r\n}<\/code><\/pre>\n<p><code>comment<\/code> is optional. Max 5,000 characters if provided.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"instanceId\": \"523440-42\",\r\n  \"flags\": [\r\n    {\r\n      \"actionId\": \"flag_001\",\r\n      \"actor\": { \"actorId\": \"353136425\", \"type\": \"USER\", \"name\": \"John Smith\" },\r\n      \"comment\": \"Needs immediate attention\",\r\n      \"createdAt\": \"2026-08-19T10:00:00Z\"\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<h3>DELETE \u2014 Unflag an Instance<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/flags\/:actionId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Path Variable<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">actionId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">The actionId from the flag entry, e.g. flag_001<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Body \u00b7 raw \u00b7 JSON (optional)<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"comment\": \"Resolved\"\r\n}<\/code><\/pre>\n<p>Returns 400 (not 409) for error cases: no flag history, actionId mismatch, already unflagged.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"instanceId\": \"523440-42\", \"flags\": [] }<\/code><\/pre>\n<h2>Blocks<\/h2>\n<h3>POST \u2014 Block an Instance<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/blocks<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">*\/*<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"reason\": \"Waiting for design approval\",\r\n  \"comment\": \"Blocked until design sign-off is received\"\r\n}<\/code><\/pre>\n<p style=\"background: #fce4e4; border-left: 4px solid #e53935; padding: 10px 14px; margin: 12px 0;\">Both <code>reason<\/code> and <code>comment<\/code> are required. Returns 400 if either is absent or blank. Use <code>GET \/forms\/:formId<\/code> to discover valid blocking reasons for the form.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"instanceId\": \"523440-42\",\r\n  \"blocks\": [\r\n    {\r\n      \"actionId\": \"block_001\",\r\n      \"reason\": \"Waiting for design approval\",\r\n      \"comment\": \"Blocked until design sign-off is received\",\r\n      \"actor\": { \"actorId\": \"353136425\", \"type\": \"USER\", \"name\": \"John Smith\" }\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<h3>DELETE \u2014 Unblock an Instance<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/blocks\/:actionId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"comment\": \"Design approved, unblocking\"\r\n}<\/code><\/pre>\n<p><code>comment<\/code> is required \u2014 returns 400 if absent or blank.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"instanceId\": \"523440-42\", \"blocks\": [] }<\/code><\/pre>\n<h2>Votes<\/h2>\n<h3>POST \u2014 Vote on an Instance<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/votes<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>No body required. Returns 409 if you have already voted on this instance.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"instanceId\": \"523440-42\", \"action\": \"voted\", \"votes\": 1 }<\/code><\/pre>\n<h3>DELETE \u2014 Remove Vote<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/votes<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Returns 409 if you have not voted on this instance.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"instanceId\": \"523440-42\", \"action\": \"unvoted\", \"votes\": 0 }<\/code><\/pre>\n<h2>Links<\/h2>\n<p>Creates or removes a typed directional link between two instances. HIERARCHY links also set <code>parentCard<\/code> on the source instance.<\/p>\n<h3>PUT \u2014 Create a Link<\/h3>\n<p><strong>PUT<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/link<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"to\": {\r\n    \"workItemId\": \"ISS-50\",\r\n    \"formId\": \"523440\",\r\n    \"workSpaceId\": \"2110769\"\r\n  },\r\n  \"relationInverse\": \"fulfills\",\r\n  \"metaType\": \"DEPENDENCY\"\r\n}<\/code><\/pre>\n<p><strong>metaType values:<\/strong> HIERARCHY (default), DEPENDENCY, TRACEBAILITY, CONTAINMENT, ASSOCIATION.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"linkId\": \"lnk_001\", \"from\": \"ISS-42\", \"to\": \"ISS-50\", \"metaType\": \"DEPENDENCY\" }<\/code><\/pre>\n<h3>DELETE \u2014 Remove a Link<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/link\/:targetId?metaType=DEPENDENCY<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Query Param<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">metaType<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Must match the value used when the link was created. Defaults to HIERARCHY.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"linkId\": \"lnk_001\", \"removed\": true }<\/code><\/pre>\n<h2>Comments<\/h2>\n<p style=\"background: #fff8e1; border-left: 4px solid #ffa000; padding: 10px 14px; margin: 12px 0;\"><strong>Limitations:<\/strong> User mentions (@user), emoji, and inline attachments are not supported in comment text. Use POST \/attachments to attach files to an instance.<\/p>\n<h3>POST \u2014 Add a Comment<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/comments<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"content\": \"Reproduced on Chrome 126. Stack trace attached.\",\r\n  \"type\": \"COMMENT\"\r\n}<\/code><\/pre>\n<p><code>content<\/code> is required (min 1 char). <code>type<\/code> is optional, defaults to COMMENT.<\/p>\n<p><strong>Response 201 CREATED<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"commentId\": \"cmt_abc123\" }<\/code><\/pre>\n<h3>GET \u2014 List Comments<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/comments<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"comments\": [\r\n    {\r\n      \"commentId\": \"cmt_abc123\",\r\n      \"content\": \"Reproduced on Chrome 126.\",\r\n      \"type\": \"COMMENT\",\r\n      \"authorId\": \"353136425\",\r\n      \"createdAt\": \"2026-08-19T10:05:00Z\",\r\n      \"replies\": []\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<h3>GET \u2014 Single Comment (with replies)<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/comments\/:commentId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"commentId\": \"cmt_abc123\",\r\n  \"content\": \"Reproduced on Chrome 126.\",\r\n  \"authorId\": \"353136425\",\r\n  \"replies\": [\r\n    { \"commentId\": \"cmt_def456\", \"content\": \"Also on Firefox.\", \"authorId\": \"353147453\" }\r\n  ]\r\n}<\/code><\/pre>\n<h3>PUT \u2014 Add a Reply<\/h3>\n<p><strong>PUT<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/comments\/:commentId\/replies<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"content\": \"Also reproduced on Safari 17.\" }<\/code><\/pre>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"commentId\": \"cmt_ghi789\" }<\/code><\/pre>\n<h3>PUT \u2014 Edit Comment Text<\/h3>\n<p><strong>PUT<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/comments\/:commentId\/content<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"content\": \"Reproduced on Chrome 126 and Edge 124. Stack trace attached.\" }<\/code><\/pre>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"commentId\": \"cmt_abc123\", \"updated\": true }<\/code><\/pre>\n<h3>DELETE \u2014 Delete Comment<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/comments\/:commentId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 204 NO CONTENT<\/strong> \u2014 Empty body on success.<\/p>\n<h2>Attachments<\/h2>\n<h3>POST \u2014 Upload a File<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/attachments<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Do NOT set manually \u2014 Postman sets this automatically for form-data<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Body \u00b7 form-data<\/strong><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Key<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Type<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">file<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">File<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Select file from your computer (max 32 MB)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"background: #e8f5e9; border-left: 4px solid #43a047; padding: 10px 14px; margin: 12px 0;\">In Postman: Body tab \u2192 select <strong>form-data<\/strong> \u2192 set key to <code>file<\/code> \u2192 hover the key and change type from Text to <strong>File<\/strong> \u2192 click Select Files.<\/p>\n<p><strong>Response 201 CREATED<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"attachmentId\": \"att_789012\" }<\/code><\/pre>\n<h3>POST \u2014 Link an External Resource<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/attachments\/link<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"attachmentName\": \"Design Mockup\",\r\n  \"content\": \"https:\/\/figma.com\/file\/abc123\",\r\n  \"linkedUsing\": \"Figma\"\r\n}<\/code><\/pre>\n<p><strong>Response 201 CREATED<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"attachmentId\": \"att_link_001\" }<\/code><\/pre>\n<h3>GET \u2014 List Attachments<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/attachments<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"attachments\": [\r\n    {\r\n      \"attachmentId\": \"att_789012\",\r\n      \"name\": \"screenshot.png\",\r\n      \"mimeType\": \"image\/png\",\r\n      \"fileSize\": 204800,\r\n      \"createdAt\": \"2026-08-19T11:00:00Z\"\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<h3>DELETE \u2014 Delete Attachment<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/attachments\/:attachmentId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 204 NO CONTENT<\/strong> \u2014 Empty body on success.<\/p>\n<h2>Todos<\/h2>\n<h3>GET \u2014 List Todos<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Param<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">assigneeId<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Filter by assignee user ID<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">limit<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Max results per page<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">pageToken<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Cursor for next page<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"todos\": [\r\n    {\r\n      \"todoId\": \"TODO1\",\r\n      \"name\": \"Write unit tests\",\r\n      \"status\": \"open\",\r\n      \"assigneeId\": \"353136425\",\r\n      \"estimate\": 4\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<h3>POST \u2014 Create a Todo<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"name\": \"Write unit tests\",\r\n  \"assigneeId\": \"353136425\",\r\n  \"estimate\": 4,\r\n  \"formId\": \"523440\"\r\n}<\/code><\/pre>\n<p><code>name<\/code> is required. All other fields are optional.<\/p>\n<p><strong>Response 201 CREATED<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"todoId\": \"TODO1\" }<\/code><\/pre>\n<h3>PATCH \u2014 Update a Todo<\/h3>\n<p><strong>PATCH<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos\/:todoId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"estimate\": 6\r\n}<\/code><\/pre>\n<p>All fields optional: <code>name<\/code>, <code>assigneeId<\/code>, <code>estimate<\/code>. Only sent fields are updated.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"todoId\": \"TODO1\", \"estimate\": 6 }<\/code><\/pre>\n<h3>POST \u2014 Close a Todo<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos\/:todoId\/close<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>No body required.<\/p>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"todoId\": \"TODO1\", \"status\": \"closed\", \"actualFinish\": \"2026-08-19T12:00:00Z\" }<\/code><\/pre>\n<h3>POST \u2014 Reopen a Todo<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos\/:todoId\/reopen<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"todoId\": \"TODO1\", \"status\": \"open\" }<\/code><\/pre>\n<h3>DELETE \u2014 Delete a Todo<\/h3>\n<p><strong>DELETE<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos\/:todoId<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{ \"message\": \"deleted\" }<\/code><\/pre>\n<h2>Time Entries<\/h2>\n<p>Time entries are keyed by <code>todoId<\/code> + <code>date<\/code>. Submitting the same pair again overwrites the existing entry. Date format: <strong>YYYY-MM-DD<\/strong>.<\/p>\n<h3>POST \u2014 Log Time<\/h3>\n<p><strong>POST<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos\/:todoId\/timeentries\/:date<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Content-Type<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Path Variable<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">date<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Format YYYY-MM-DD, e.g. 2026-08-19. Cannot be a future date.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"actual\": 3.5,\r\n  \"remaining\": 0.5\r\n}<\/code><\/pre>\n<p><code>actual<\/code> is required (hours logged). <code>remaining<\/code> and <code>estimate<\/code> are optional.<\/p>\n<p><strong>Response 201 CREATED<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"actual\": 3.5,\r\n  \"remaining\": 0.5,\r\n  \"latestRemaining\": 0.5,\r\n  \"totalActual\": 7.0,\r\n  \"timesheetDate\": \"2026-08-19\"\r\n}<\/code><\/pre>\n<h3>GET \u2014 Get Time Entry for a Date<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/instances\/:instanceId\/todos\/:todoId\/timeentries\/:date<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"actual\": 3.5,\r\n  \"remaining\": 0.5,\r\n  \"timesheetDate\": \"2026-08-19\"\r\n}<\/code><\/pre>\n<p>Returns 404 if no entry exists for that todo + date combination.<\/p>\n<h3>GET \u2014 List Time Entries by Date Range<\/h3>\n<p><strong>GET<\/strong> <code>{{baseUrl}}\/timeentries?timesheetStartDate=2026-08-01&amp;timesheetEndDate=2026-08-19&amp;limit=50<\/code><\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Header<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Authorization<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Bearer {{token}}<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">accept<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">application\/json<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"width: 100%; border-collapse: collapse; margin: 12px 0;\">\n<thead>\n<tr>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Param<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Required<\/th>\n<th style=\"padding: 8px; border: 1px solid #ddd; background: #f0f0f0; text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">timesheetStartDate<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">YYYY-MM-DD<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">timesheetEndDate<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">req<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">YYYY-MM-DD<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">workspaceIds[]<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Repeatable \u2014 filter by workspace<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">limit<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">1\u2013100, default 50<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">pageToken<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">opt<\/td>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Cursor for next page<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Response 200 OK<\/strong><\/p>\n<pre style=\"background: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 6px; overflow: auto; font-size: 13px; line-height: 1.6;\"><code>{\r\n  \"items\": [\r\n    {\r\n      \"todoId\": \"TODO1\",\r\n      \"instanceId\": \"523440-42\",\r\n      \"actual\": 3.5,\r\n      \"timesheetDate\": \"2026-08-19\"\r\n    }\r\n  ],\r\n  \"total\": 1\r\n}<\/code><\/pre>\n<div class=\"helpful-block-content wth-theme-thumbs\" data-title=\"\" >\n<ul>\n<li><span class=\"wth-title\">Was this helpful?<\/span><\/li>\n<li><a data-post=\"24095\" data-post-url=\"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/article\/nimble-rest-api-reference-guide\/\" data-post-title=\"Nimble REST API Reference Guide\" data-response=\"1\" href=\"#\" class=\"wth-green-btn icon-thumbsup\">Yes<\/a>&nbsp; &nbsp;<a data-response=\"0\" data-post=\"24095\" data-post-url=\"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/article\/nimble-rest-api-reference-guide\/\" data-post-title=\"Nimble REST API Reference Guide\" href=\"#\" class=\"wth-red-btn icon-thumbsdown\">No<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"author":2,"featured_media":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","multi-rating":{"mr_rating_results":[]},"_links":{"self":[{"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/article\/24095"}],"collection":[{"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/comments?post=24095"}],"version-history":[{"count":2,"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/article\/24095\/revisions"}],"predecessor-version":[{"id":24097,"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/article\/24095\/revisions\/24097"}],"wp:attachment":[{"href":"https:\/\/www.nimblework.com\/knowledge-base\/nimble\/wp-json\/wp\/v2\/media?parent=24095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}