### Create OAuth Application and Get Access Token Source: https://devdocs.startinfinity.com/2026-04-20.morava This Node.js example demonstrates how to set up an Express server to handle the OAuth 2.0 authorization code flow, including redirecting the user to authorize the application and exchanging the authorization code for an access token. ```javascript const express = require("express"); const querystring = require("querystring"); const session = require("express-session"); const app = express(); const port = 8080; const url = `http://localhost:${port}`; const oauthServer = "https://app.startinfinity.com"; const appId = ""; const appSecret = ""; const callbackUrl = `${url}/callback`; app.use(session({ secret: "keyboard cat", cookie: { maxAge: 60000 } })); app.get("/redirect", (req, res) => { const state = ""; req.session.state = state; const query = querystring.stringify({ client_id: appId, redirect_uri: callbackUrl, response_type: "code", scope: "", state: state, }); res.redirect(`${oauthServer}/oauth/authorize?${query}`); }); app.get("/callback", async (req, res) => { if (req.session.state !== req.query.state) { throw Error("States do not match"); } const data = { grant_type: "authorization_code", client_id: appId, client_secret: appSecret, redirect_uri: callbackUrl, code: req.query.code, }; const response = await fetch(`${oauthServer}/oauth/token`, { method: "POST", headers: { "Content-Type": "application/json", }, redirect: "follow", body: JSON.stringify(data), }); const token = await response.json(); res.json(token); }); app.listen(port, () => { console.log(`Example app listening at ${url}`); }); ``` -------------------------------- ### Example API Response (200 OK) Source: https://devdocs.startinfinity.com/2026-04-20.morava This is an example of a successful response when listing boards. It includes pagination information and a list of board objects. ```json { "has_more": false, "before": "TEExZFc4aTFUVEssMjAyMC0xMS0yNSAxNTozMjozOA==", "after": "TEExZFc4aTFUVEssMjAyMC0xMS0yNSAxNTozMjozOA==", "data": [ { "id": "LA1dW8i1TTK", "object": "board", "name": "Vacation Planning", "sort_order": "393216.000000000000000000000000000000", "color": "#4eb4f9", "description": null, "user_ids": [ 1302 ], "deleted": false } ] } ``` -------------------------------- ### Attribute Creation Response Example Source: https://devdocs.startinfinity.com/2026-04-20.morava This is an example of a successful response (200 OK) when creating an attribute. It includes the ID, name, type, default data, settings, and creation metadata. ```json { "id": "019daf36-88d1-701c-b6a7-3b9fc15ead78", "object": "attribute", "name": "architecto", "type": "number", "default_data": 0, "settings": { "delimiter": "." }, "created_by": 1302, "created_at": "2026-04-21T08:44:40.000000Z", "deleted": false } ``` -------------------------------- ### Get Attribute Response Example Source: https://devdocs.startinfinity.com/2026-04-20.morava/collection.json Example response for retrieving a single attribute, detailing its properties and settings. ```json { "id": "46b171c5-32fa-4bd8-b23a-f2bf4645632c", "object": "attribute", "name": "Price", "type": "label", "default_data": [], "settings": { "multiple": true, "allowNew": true, "allowEmpty": true, "labels": [ { "id": "d271b2b3-4ccc-43cd-8628-5861d2151eb6", "name": "$", "color": "#92F3EC" }, { "id": "7a9bd039-f9a4-4da6-8e95-d356d6dc44f8", "name": "$$", "color": "#FFD3F2" } ] }, "created_by": 1299, "created_at": "2020-11-26T13:57:11.000000Z", "deleted": false } ``` -------------------------------- ### Get Board Request Source: https://devdocs.startinfinity.com/2026-04-20.morava/collection.json Example request to fetch a single board by its ID. Requires workspace and board IDs. The user must have access to the board. ```http GET api/v2/workspaces/:workspace/boards/:board HTTP/1.1 Host: {{baseUrl}} Content-Type: application/json Accept: application/json X-API-Version: 2026-04-20.morava ``` -------------------------------- ### Example Workspace Response Structure Source: https://devdocs.startinfinity.com/2026-04-20.morava This is an example of a successful (200) response when listing workspaces. It includes pagination information and a list of workspace objects, each with an ID, name, and owner details. ```json { "has_more": false, "before": "NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=", "after": "NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=", "data": [ { "id": 669, "object": "workspace", "name": "Customer Success", "photo_url": null, "owner_id": 1302, "deleted": false } ] } ``` -------------------------------- ### Get User Profile Data (Python Requests) Source: https://devdocs.startinfinity.com/2026-04-20.morava This Python example uses the requests library to fetch the current user's profile data. It configures the required headers for the API request. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/profile' headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('GET', url, headers=headers) response.json() ``` -------------------------------- ### Webhook Payload Example Source: https://devdocs.startinfinity.com/2026-04-20.morava/collection.json This example illustrates the structure of a webhook payload for programmatic usage, detailing the event type and the associated entity data. ```json { "event": "value.created", "payload": { "id": "5455db29-d1a0-437e-8461-700d46ebadf7", "object": "value", "data": "Test", "attribute_id": "a4b26453-156c-432f-8e13-bc6908cdc2de", "deleted": false } } ``` -------------------------------- ### Get Board by ID using JavaScript Source: https://devdocs.startinfinity.com/2026-04-20.morava This JavaScript snippet demonstrates how to fetch a board using the Fetch API. It includes setting up the URL, headers, and making the GET request. ```javascript const url = new URL( "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK" ); const headers = { "Authorization": "Bearer {YOUR_AUTH_KEY}", "Content-Type": "application/json", "Accept": "application/json", "X-API-Version": "2026-04-20.morava", }; fetch(url, { method: "GET", headers, }).then(response => response.json()); ``` -------------------------------- ### Example API Response for Update Hook Source: https://devdocs.startinfinity.com/2026-04-20.morava This is an example of a successful (200 OK) response when updating a hook. It includes the hook's ID, associated board, creation timestamp, and other details. ```json { "id": "2555617b-01e2-4501-8ad8-2ae8e49766bf", "object": "hook", "url": "https://example.com/webhook/comment-created", "user_id": 1302, "board_id": "LA1dW8i1TTK", "secret": "D5DR6g203U6zB3X5nylgIGt45ZdbO1nO", "events": [ { "event": "comment.created", "data": null } ], "created_at": "2021-05-14T14:34:47.000000Z", "deleted": false } ``` -------------------------------- ### Create Board Request Source: https://devdocs.startinfinity.com/2026-04-20.morava/collection.json Example request to create a new board within a workspace. Requires a workspace ID and a JSON body containing board details. ```http POST api/v2/workspaces/:workspace/boards HTTP/1.1 Host: {{baseUrl}} Content-Type: application/json Accept: application/json X-API-Version: 2026-04-20.morava ``` -------------------------------- ### Get Item using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to make a GET request to retrieve an item. Ensure you replace placeholders with your actual authentication key, workspace ID, board ID, and item ID. The `expand[]=values` query parameter can be used to include item values in the response. ```bash curl --request GET \ --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764?expand[]=values" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" ``` -------------------------------- ### Create Hook using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Example of creating a new webhook subscription using a cURL request. Ensure to replace placeholders like {YOUR_AUTH_KEY}. ```bash curl --request POST \ "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" \ --data "{ \"url\": \"https:\/\/example.com\/webhook\/comment-created\", \"events\": [ { \"event\": \"comment.created\" } ] }" ``` -------------------------------- ### Update Folder Response (200 OK) Source: https://devdocs.startinfinity.com/2026-04-20.morava This is an example of a successful response when updating a folder. It returns the updated folder object with its current state. ```json { "id": "8FjZofz89PM", "object": "folder", "name": "architecto", "sort_order": "65536.000000000000000000000000000000", "color": "architecto", "settings": {}, "attribute_ids": [ "e3009b98-db05-4408-8414-c8ce5cd7c143", "ab9ba009-da5d-4828-8c47-c53199f9b09b" ], "parent_id": "LA1dW8i1TTK", "deleted": false } ``` -------------------------------- ### Create Application & Integration - (Clients) Source: https://devdocs.startinfinity.com/2026-04-20.morava Information on how to create applications and integrations for API access. ```APIDOC ## Create Application & Integration - (Clients) ### Description Applications and integrations can be created to manage API access for third-party services. This involves registering your application and obtaining client credentials, which can then be used for OAuth 2.0 authentication flows. ``` -------------------------------- ### Paginate through API using Got library Source: https://devdocs.startinfinity.com/2026-04-20.morava This JavaScript example demonstrates using the 'got' library to paginate through API resources. It configures headers, search parameters, and response transformation for data extraction. ```javascript const boards = await got.paginate .all(`https://app.startinfinity.com/api/v2/workspaces/${workspaceId}/boards`, { headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${program.optsWithGlobals().token}` }, searchParams: { limit: 20, sort_by: 'created_at', sort_direction: 'desc' }, pagination: { transform: (res) => JSON.parse(res.body).data } }); for await (const board of boards) { console.log(board.name); } ``` -------------------------------- ### Get Board by ID using Python Source: https://devdocs.startinfinity.com/2026-04-20.morava This Python script uses the requests library to get a board by its ID. It configures the URL, headers, and sends a GET request. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK' headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('GET', url, headers=headers) response.json() ``` -------------------------------- ### Get Folder by ID using Python Requests Source: https://devdocs.startinfinity.com/2026-04-20.morava This Python script uses the `requests` library to get folder information. It defines the URL, headers with authentication, and makes a GET request, returning the JSON response. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM' headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('GET', url, headers=headers) response.json() ``` -------------------------------- ### Create Board using Python Source: https://devdocs.startinfinity.com/2026-04-20.morava This Python script uses the requests library to create a board. It sets up the URL, payload, and headers for a POST request. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards' payload = { "name": "Development Tasks", "description": "Product Development board", "color": "#f57740", "user_ids": [] } headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('POST', url, headers=headers, json=payload) response.json() ``` -------------------------------- ### Create Board using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to create a new board. Provide the workspace ID and include board details such as name, description, color, and user IDs in the request body. ```curl curl --request POST \ "https://app.startinfinity.com/api/v2/workspaces/669/boards" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" \ --data "{ \"name\": \"Development Tasks\", \"description\": \"Product Development board\", \"color\": \"#f57740\", \"user_ids\": [] }" ``` -------------------------------- ### Example API Response for Delete Attribute Source: https://devdocs.startinfinity.com/2026-04-20.morava This is an example of a successful response (200 OK) when an attribute is deleted. It confirms the attribute's ID and that it has been marked as deleted. ```json { "id": "46b171c5-32fa-4bd8-b23a-f2bf4645632c", "object": "attribute", "deleted": true } ``` -------------------------------- ### Create Board using JavaScript Source: https://devdocs.startinfinity.com/2026-04-20.morava This JavaScript snippet shows how to create a board using the Fetch API. It defines the URL, headers, and request body, then sends a POST request. ```javascript const url = new URL( "https://app.startinfinity.com/api/v2/workspaces/669/boards" ); const headers = { "Authorization": "Bearer {YOUR_AUTH_KEY}", "Content-Type": "application/json", "Accept": "application/json", "X-API-Version": "2026-04-20.morava", }; let body = { "name": "Development Tasks", "description": "Product Development board", "color": "#f57740", "user_ids": [] }; fetch(url, { method: "POST", headers, body: JSON.stringify(body), }).then(response => response.json()); ``` -------------------------------- ### GET Request with 'after' Pagination Cursor Source: https://devdocs.startinfinity.com/2026-04-20.morava Use the 'after' parameter in a GET request to retrieve the next page of data. The value is a cursor provided in a previous API response. ```http GET /api/v2/workspaces/{{ workspace }}/boards/{{ board }}/items?after=MjQ5ZWM5ODMtMTdjNi00Y2Y4LWIwZTEtYjEwOGZlZmU5MGY2LDIwMjItMTItMDYgMDk6MjQ6MTU= ``` -------------------------------- ### Create Reference using JavaScript Fetch API Source: https://devdocs.startinfinity.com/2026-04-20.morava This JavaScript snippet demonstrates how to create a reference using the Fetch API. It includes setting up the URL, headers, and request body. The response is parsed as JSON. ```javascript const url = new URL( "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references" ); const headers = { "Authorization": "Bearer {YOUR_AUTH_KEY}", "Content-Type": "application/json", "Accept": "application/json", "X-API-Version": "2026-04-20.morava", }; let body = { "attribute_id": "b5e95ec8-80bc-4a55-a996-dcea663e4e6c", "from_item_id": "341a89c9-618e-40ba-92e1-1e12c83b69a6", "to_item_id": "033709ef-aa01-4eb8-b4d0-5733e283c160" }; fetch(url, { method: "POST", headers, body: JSON.stringify(body), }).then(response => response.json()); ``` -------------------------------- ### Create Board Source: https://devdocs.startinfinity.com/2026-04-20.morava Creates a new board within a specified workspace. Requires authentication. ```APIDOC ## Create board requires authentication ### Request POST **`api/v2/workspaces/{workspace}/boards`** #### **Headers** **`Authorization`** Example: `Bearer {YOUR_AUTH_KEY}` **`Content-Type`** Example: `application/json` **`Accept`** Example: `application/json` **`X-API-Version`** Example: `2026-04-20.morava` #### **URL Parameters** **`workspace`** string Workspace ID Example: `669` #### **Request Body** - **name** (string) - Required - The name of the board. - **description** (string) - Optional - A description for the board. - **color** (string) - Optional - The color of the board in hex format. - **user_ids** (array) - Optional - A list of user IDs to associate with the board. ### Request Example ```json { "name": "Development Tasks", "description": "Product Development board", "color": "#f57740", "user_ids": [] } ``` ### Response #### Success Response (201) - **id** (string) - Description - **object** (string) - Description - **name** (string) - Description - **sort_order** (string) - Description - **color** (string) - Description - **description** (string) - Description - **user_ids** (array) - Description - **deleted** (boolean) - Description ### Response Example ```json { "id": "niBYCM9BBHm", "object": "board", "name": "Development Tasks", "sort_order": "458752.000000000000000000000000000000", "color": "#f57740", "description": "Product Development board", "user_ids": [ 1302 ], "deleted": false } ``` ``` -------------------------------- ### Create Folder Source: https://devdocs.startinfinity.com/2026-04-20.morava/collection.json Creates a new folder within a specified board. ```APIDOC ## POST /api/v2/workspaces/:workspace/boards/:board/folders ### Description Creates a new folder. ### Method POST ### Endpoint /api/v2/workspaces/:workspace/boards/:board/folders #### Path Parameters - **workspace** (string) - Required - Workspace ID - **board** (string) - Required - Board ID #### Request Body - **name** (string) - Required - The name of the folder. - **color** (string) - Optional - The color of the folder (e.g., "#f57740"). - **parent_id** (string) - Optional - The ID of the parent folder. - **attribute_ids** (array) - Optional - A list of attribute IDs. - **sort_order** (string) - Optional - The sorting order of the folder. - **settings** (array) - Optional - Settings for the folder. ### Request Example { "name": "architecto", "color": "#f57740", "parent_id": "LA1dW8i1TTK", "attribute_ids": [], "sort_order": "65536", "settings": [] } ### Response #### Success Response (201) - **id** (string) - The unique identifier of the newly created folder. - **object** (string) - The type of object, which is 'folder'. - **name** (string) - The name of the folder. - **sort_order** (string) - The sorting order of the folder. - **color** (string) - The color associated with the folder. - **settings** (object) - Settings for the folder. - **attribute_ids** (array) - A list of attribute IDs associated with the folder. - **parent_id** (string) - The ID of the parent folder or board. - **deleted** (boolean) - Indicates if the folder is deleted. #### Response Example { "id": "DGX7yNsLhNx", "object": "folder", "name": "architecto", "sort_order": "65536", "color": "#f57740", "settings": {}, "attribute_ids": [], "parent_id": "LA1dW8i1TTK", "deleted": false } ``` -------------------------------- ### Get Comment using Python Requests Source: https://devdocs.startinfinity.com/2026-04-20.morava This Python script uses the 'requests' library to make a GET request for a specific comment. It shows how to define the URL and headers, including authentication. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments/bfefec7e-5ba6-4287-ac4a-753357584f16' headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('GET', url, headers=headers) response.json() ``` -------------------------------- ### Create Folder Source: https://devdocs.startinfinity.com/2026-04-20.morava Creates a new folder within a specified workspace and board. Requires authentication. ```APIDOC ## Create folder requires authentication ### Request POST **`api/v2/workspaces/{workspace}/boards/{board}/folders`** #### Headers **`Authorization`** Example: `Bearer {YOUR_AUTH_KEY}` **`Content-Type`** Example: `application/json` **`Accept`** Example: `application/json` **`X-API-Version`** Example: `2026-04-20.morava` #### URL Parameters **`workspace`** string Workspace ID Example: `669` **`board`** string Board ID Example: `LA1dW8i1TTK` #### Request Body - **name** (string) - Required - The name of the folder. - **color** (string) - Optional - The color of the folder (e.g., "#f57740"). - **parent_id** (string) - Required - The ID of the parent board or folder. - **attribute_ids** (array) - Optional - A list of attribute IDs to associate with the folder. - **sort_order** (string) - Optional - The sort order for the folder. - **settings** (array) - Optional - Settings for the folder. ### Response #### Success Response (201) - **id** (string) - The unique identifier for the newly created folder. - **object** (string) - The type of object, which is 'folder'. - **name** (string) - The name of the folder. - **sort_order** (string) - The order in which the folder should be sorted. - **color** (string) - The color associated with the folder. - **settings** (object) - Configuration settings for the folder. - **attribute_ids** (array) - A list of attribute IDs associated with the folder. - **parent_id** (string) - The ID of the parent board or folder. - **deleted** (boolean) - Indicates if the folder has been deleted. ``` -------------------------------- ### Get Attribute using Python Requests Source: https://devdocs.startinfinity.com/2026-04-20.morava This Python script uses the 'requests' library to retrieve a single attribute. It defines the URL and headers, then makes a GET request and returns the JSON response. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes/46b171c5-32fa-4bd8-b23a-f2bf4645632c' headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('GET', url, headers=headers) response.json() ``` -------------------------------- ### Get Attribute using JavaScript Fetch API Source: https://devdocs.startinfinity.com/2026-04-20.morava This JavaScript snippet demonstrates how to fetch a single attribute using the Fetch API. It includes setting up the URL, headers, and making the GET request. The response is then parsed as JSON. ```javascript const url = new URL( "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes/46b171c5-32fa-4bd8-b23a-f2bf4645632c" ); const headers = { "Authorization": "Bearer {YOUR_AUTH_KEY}", "Content-Type": "application/json", "Accept": "application/json", "X-API-Version": "2026-04-20.morava", }; fetch(url, { method: "GET", headers, }).then(response => response.json()); ``` -------------------------------- ### List Boards using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to list boards in a workspace. Ensure you replace {YOUR_AUTH_KEY} with your actual authentication token. ```curl curl --request GET \ --get "https://app.startinfinity.com/api/v2/workspaces/669/boards?limit=10&sort_by=created_at&sort_direction=desc" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" ``` -------------------------------- ### Get View by ID using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to make a GET request to retrieve a specific view. Ensure you replace placeholders with your actual authentication key and IDs. The X-API-Version header specifies the API version. ```curl curl --request GET \ --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views/11c3d575-8309-4cef-95d3-17f18adea1b3" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" ``` -------------------------------- ### Create board Source: https://devdocs.startinfinity.com/2026-04-20.morava/collection.json Creates a new board within a specified workspace. ```APIDOC ## POST api/v2/workspaces/:workspace/boards ### Description Creates a new board within a specified workspace. ### Method POST ### Endpoint api/v2/workspaces/:workspace/boards ### Parameters #### Path Parameters - **workspace** (string) - Required - Workspace ID #### Request Body - **name** (string) - Required - The name of the board to be created. - **color** (string) - Optional - The color of the board, specified in hexadecimal format (e.g., "#4eb4f9"). - **description** (string) - Optional - A description for the board. ### Request Example { "name": "New Project Board", "color": "#a1c45a", "description": "Board for tracking new project tasks." } ### Response #### Success Response (201) - **id** (string) - The unique identifier of the newly created board. - **object** (string) - The type of object, which is 'board'. - **name** (string) - The name of the board. - **sort_order** (string) - The order in which the board is sorted. - **color** (string) - The color associated with the board. - **description** (string) - A description of the board. - **user_ids** (array) - A list of user IDs associated with the board. - **deleted** (boolean) - Indicates if the board has been deleted. ### Response Example { "id": "LA1dW8i1TTK", "object": "board", "name": "New Project Board", "sort_order": "393216.000000000000000000000000000000", "color": "#a1c45a", "description": "Board for tracking new project tasks.", "user_ids": [ 1302 ], "deleted": false } ``` -------------------------------- ### Create Item using JavaScript Fetch API Source: https://devdocs.startinfinity.com/2026-04-20.morava This JavaScript snippet demonstrates how to create an item using the Fetch API. It sets up the URL, headers, and request body, then sends a POST request to the API. ```javascript const url = new URL( "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items" ); const headers = { "Authorization": "Bearer {YOUR_AUTH_KEY}", "Content-Type": "application/json", "Accept": "application/json", "X-API-Version": "2026-04-20.morava", }; let body = { "folder_id": "APwqfkShQuR", "values": [ { "attribute_id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9", "data": "test" } ] }; fetch(url, { method: "POST", headers, body: JSON.stringify(body), }).then(response => response.json()); ``` -------------------------------- ### Get Attribute using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to make a GET request to retrieve a single attribute by its ID. Ensure you replace placeholders with your actual authentication key, workspace ID, board ID, and attribute ID. ```curl curl --request GET \ --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes/46b171c5-32fa-4bd8-b23a-f2bf4645632c" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" ``` -------------------------------- ### Get views Source: https://devdocs.startinfinity.com/2026-04-20.morava Retrieves details for a specific view. ```APIDOC ## Get views ### Description Retrieves details for a specific view. ### Method GET ### Endpoint /views/{view_id} ``` -------------------------------- ### Create Item Source: https://devdocs.startinfinity.com/2026-04-20.morava Creates a new item within a specified workspace and board. Requires authentication. ```APIDOC ## POST api/v2/workspaces/{workspace}/boards/{board}/items ### Description Creates a new item within a specified workspace and board. ### Method POST ### Endpoint api/v2/workspaces/{workspace}/boards/{board}/items ### Headers - **Authorization** (string) - Required - Example: `Bearer {YOUR_AUTH_KEY}` - **Content-Type** (string) - Required - Example: `application/json` - **Accept** (string) - Required - Example: `application/json` - **X-API-Version** (string) - Required - Example: `2026-04-20.morava` ### Parameters #### Path Parameters - **workspace** (string) - Required - Workspace ID. Example: `669` - **board** (string) - Required - Board ID. Example: `LA1dW8i1TTK` #### Request Body - **folder_id** (string) - Required - Example: `APwqfkShQuR` - **values** (object) - Optional - **attribute_id** (string) - Required - Example: `e9eabdcd-66be-41d4-a88c-bdf8d05c28a9` - **data** (string) - Required - Example: `test` - **parent_id** (string) - Optional - Example: ### Request Example ```json { "folder_id": "APwqfkShQuR", "values": [ { "attribute_id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9", "data": "test" } ] } ``` ### Response #### Success Response (201) - **id** (string) - Description - **object** (string) - Description - **folder_id** (string) - Description - **parent_id** (string) - Description - **created_at** (string) - Description - **sort_order** (integer) - Description - **deleted** (boolean) - Description #### Response Example ```json { "id": "60d59703-43e3-429c-bdd0-5dd8d129b3f4", "object": "item", "folder_id": "APwqfkShQuR", "parent_id": null, "created_at": "2026-04-21T08:44:40.000000Z", "sort_order": 2233344, "deleted": false } ``` ``` -------------------------------- ### Item Ordering with Sort Order Source: https://devdocs.startinfinity.com/2026-04-20.morava Demonstrates the use of 'sort_order' for item ordering, showing how to insert new items by calculating intermediate values. ```plaintext Item 1: sort_order = 65536 Item 2: sort_order = 65536 * 2 = 131072 Item 3: sort_order = 65536 * 3 = 196608 Item 4: sort_order = 65536 * 4 = 262144 If you want to insert a new item between **Item 2** and **Item 3** , you can assign the new item a `sort_order` value of _(196608 + 131072) / 2_ = **163840** , which is the sort order between those two items. This will allow you to insert the new item between Item 2 and Item 3 without having to update the `sort_order` values of the other items in the data set. ``` -------------------------------- ### Get folder Source: https://devdocs.startinfinity.com/2026-04-20.morava Retrieves details for a specific folder. ```APIDOC ## Get folder ### Description Retrieves details for a specific folder. ### Method GET ### Endpoint /folders/{folder_id} ``` -------------------------------- ### Get comment Source: https://devdocs.startinfinity.com/2026-04-20.morava Retrieves details for a specific comment. ```APIDOC ## Get comment ### Description Retrieves details for a specific comment. ### Method GET ### Endpoint /comments/{comment_id} ``` -------------------------------- ### Create Hook using Python Requests Source: https://devdocs.startinfinity.com/2026-04-20.morava Example of creating a new webhook subscription using the Python requests library. This includes setting up the URL, payload, and headers. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks' payload = { "url": "https:\/\/example.com\/webhook\/comment-created", "events": [ { "event": "comment.created" } ] } headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('POST', url, headers=headers, json=payload) response.json() ``` -------------------------------- ### Get item Source: https://devdocs.startinfinity.com/2026-04-20.morava Retrieves details for a specific item. ```APIDOC ## Get item ### Description Retrieves details for a specific item. ### Method GET ### Endpoint /items/{item_id} ``` -------------------------------- ### Get attribute Source: https://devdocs.startinfinity.com/2026-04-20.morava Retrieves details for a specific attribute. ```APIDOC ## Get attribute ### Description Retrieves details for a specific attribute. ### Method GET ### Endpoint /attributes/{attribute_id} ``` -------------------------------- ### List Views using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to list views within a specific folder of a board. Ensure you replace `{YOUR_AUTH_KEY}` with your actual authentication token. ```curl curl --request GET \ --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views?limit=10&sort_by=created_at&sort_direction=desc&folder_id=8FjZofz89PM" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" ``` -------------------------------- ### Get board Source: https://devdocs.startinfinity.com/2026-04-20.morava Retrieves details for a specific board. ```APIDOC ## Get board ### Description Retrieves details for a specific board. ### Method GET ### Endpoint /boards/{board_id} ``` -------------------------------- ### List Hooks using Python Requests Source: https://devdocs.startinfinity.com/2026-04-20.morava This Python script shows how to list hooks using the `requests` library. It includes necessary headers and query parameters for the API call. Replace `{YOUR_AUTH_KEY}` with your actual token. ```python import requests import json url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks' params = { 'expand[0]': 'logs', } headers = { 'Authorization': 'Bearer {YOUR_AUTH_KEY}', 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-API-Version': '2026-04-20.morava' } response = requests.request('GET', url, headers=headers, params=params) response.json() ``` -------------------------------- ### Get Folder Source: https://devdocs.startinfinity.com/2026-04-20.morava/collection.json Retrieves a specific folder by its ID. ```APIDOC ## GET /api/v2/workspaces/:workspace/boards/:board/folders/:folder ### Description Retrieves a specific folder by its ID. ### Method GET ### Endpoint /api/v2/workspaces/:workspace/boards/:board/folders/:folder ### Parameters #### Path Parameters - **workspace** (string) - Required - Workspace ID - **board** (string) - Required - Board ID - **folder** (string) - Required - Folder ID ``` -------------------------------- ### Get my profile data Source: https://devdocs.startinfinity.com/2026-04-20.morava Retrieves the profile data of the authenticated user. ```APIDOC ## Get my profile data ### Description Retrieves the profile data of the authenticated user. ### Method GET ### Endpoint /profile ``` -------------------------------- ### List Folders using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to list all folders belonging to a board. Ensure you replace {YOUR_AUTH_KEY} with your actual authentication token. ```curl curl --request GET \ --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders?limit=10&sort_by=created_at&sort_direction=desc" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" ``` -------------------------------- ### Number Attribute Example Source: https://devdocs.startinfinity.com/2026-04-20.morava Represents a floating-point number for a number attribute. ```json 3.3198 ``` -------------------------------- ### Create item Source: https://devdocs.startinfinity.com/2026-04-20.morava Creates a new item within a specified board or folder. ```APIDOC ## Create item ### Description Creates a new item within a specified board or folder. ### Method POST ### Endpoint /items ``` -------------------------------- ### Members Attribute Example Source: https://devdocs.startinfinity.com/2026-04-20.morava An array of user IDs for a members attribute. ```json [ 1975 ] ``` -------------------------------- ### Create Reference using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to create a reference between two items. Ensure you replace placeholders with your actual authentication key, workspace ID, board ID, and item IDs. ```curl curl --request POST \ "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" \ --data "{ \"attribute_id\": \"b5e95ec8-80bc-4a55-a996-dcea663e4e6c\", \"from_item_id\": \"341a89c9-618e-40ba-92e1-1e12c83b69a6\", \"to_item_id\": \"033709ef-aa01-4eb8-b4d0-5733e283c160\" }" ``` -------------------------------- ### Checkbox Attribute Example Source: https://devdocs.startinfinity.com/2026-04-20.morava Represents a boolean value for a checkbox attribute. ```json true ``` -------------------------------- ### Create Item using cURL Source: https://devdocs.startinfinity.com/2026-04-20.morava Use this cURL command to create a new item. Ensure you replace placeholders like {YOUR_AUTH_KEY} with your actual credentials and IDs. The request includes folder ID and item values. ```curl curl --request POST \ "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items" \ --header "Authorization: Bearer {YOUR_AUTH_KEY}" \ --header "Content-Type: application/json" \ --header "Accept: application/json" \ --header "X-API-Version: 2026-04-20.morava" \ --data "{ \"folder_id\": \"APwqfkShQuR\", \"values\": [ { \"attribute_id\": \"e9eabdcd-66be-41d4-a88c-bdf8d05c28a9\", \"data\": \"test\" } ] }" ``` -------------------------------- ### Email Attribute Example Source: https://devdocs.startinfinity.com/2026-04-20.morava Represents a valid email address for an email attribute. ```json "hello@startinfinity.com" ``` -------------------------------- ### Create Folder using JavaScript Fetch API Source: https://devdocs.startinfinity.com/2026-04-20.morava This JavaScript snippet shows how to create a folder using the Fetch API. It defines the request URL, headers, and constructs the JSON body containing the new folder's details. ```javascript const url = new URL( "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders" ); const headers = { "Authorization": "Bearer {YOUR_AUTH_KEY}", "Content-Type": "application/json", "Accept": "application/json", "X-API-Version": "2026-04-20.morava", }; let body = { "name": "architecto", "color": "#f57740", "parent_id": "LA1dW8i1TTK", "attribute_ids": [], "sort_order": "65536", "settings": [] }; fetch(url, { method: "POST", headers, body: JSON.stringify(body), }).then(response => response.json()); ```