MENU navbar-image

Welcome to our API documentation!

As you scroll down, you'll notice code examples for working with the API in different programming languages in the dark area to your right (on mobile devices, the examples will appear as part of the existing content). You can change the programming language of the examples by using the tabs in the top right corner of your screen (on mobile devices, you’ll be able to do this from the nav menu in the top left section).

Rate Limiting

The API has a limit of 180 requests per minute. When the limit is reached, the API will respond with 429 Too Many Requests.

Multi-action endpoints

There are a couple of endpoints that are capable of performing multiple actions: to create, update, and delete an entry.

To create an entry, post the data to the endpoint. If the ID is new, a new record will be created. In any other case, it will be updated.

To update an entry, post the data to the endpoint and specify the ID of the entry you want to update.

To delete an entry, update it with deleted_at property set to the current date.

Attribute Types

Data for specific item has to be of the correct format. Depending on the attribute type, data will have different format.

Attribute Type Example (json) Notes
text
"some Text"
checkbox
true
longtext
"<p>Some Text</p>"
label
[
  "3f68e105-d878-40d9-8e51-5919d92ab89d",
  "6bc19250-f233-4a6d-9ef7-620192b4147c"
] 
Array of ids. Label IDs are defined in the attribute settings.
members
[
  1975
]
Array of user ids.
links
[
  {
    "id": "d72e0591-25f1-4003-b5ba-874fa4424ce2",
    "url": "https://startinfinity.com/",
    "name": "🚀 Infinity | Customizable Work Management Platform",
    "favicon": "https://startinfinity.com/favicon/android-icon-192x192.png?v=2"
  }
]
checklist
[
  {
    "id": "71559530-e671-4043-a6e5-dc017b8a1771",
    "name": "One",
    "done": true
  },
  {
    "id": "3c23caad-390b-41d3-ae18-607bb03f7168",
    "name": "Two",
    "done": false
  }
]
attachments
[
  {
    "id": 86255
  }
]
Id is the ID of uploaded file. So frist you need to use Attachments endpoint to upload file and use ID from response to set on this attribute.
number
3.3198
reference Check the References endpoint To make a reference between items check the References endpoint
progress
41
Value should be in the range defined by the Attribute Settings
rating
3
Value should be in the range defined by the Attribute Settings
email
"hello@startinfinity.com"
Valid Email
phone
"+1 206 555 0100"
Valid phone number that matches this regular expression: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s0-9]*$/

Order of items

The sort_order parameter is used to specify the order in which the data should be sorted. This parameter is typically an integer value that can be incremented by powers of two (2^16) to allow for the insertion of new items between existing items without having to update the sort_order values of all the other items in the data set.

For example, let's say that you have a data set of items that are sorted by sort_order, and the sort_order values for these items are as follows:

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.

Pagination

To implement pagination, the API includes two parameters in its response: before and after. These parameters can be used by the client to specify which page of data to retrieve in the next request.

The before parameter represents the pagination cursor for the page before the current page of data. When this parameter is included in the next request, the API will return the page of data that comes before the current page in the data set.

The after parameter, on the other hand, represents the pagination cursor for the page after the current page of data. When this parameter is included in the next request, the API will return the page of data that comes after the current page in the data set.

Here is an example of how these parameters might be used in a request to the API:

GET /api/v2/workspaces/{{ workspace }}/boards/{{ board }}/items?after=MjQ5ZWM5ODMtMTdjNi00Y2Y4LWIwZTEtYjEwOGZlZmU5MGY2LDIwMjItMTItMDYgMDk6MjQ6MTU=

In this example, the after parameter is used to specify the pagination cursor for the page of data that comes after the current page in the data set. The API will then return the page of data that comes after the current page, based on the value of the after cursor.

Here is an example of how these parameters might be used in a response from the API:

{
  "has_more": false,
  "before": "MDM5ODY2YzItOGIyMy00NGQzLWI1YjYtNDE4M2U0MThhNzNkLDIwMjItMTItMDYgMDk6MjQ6MTU=",
  "after": "MDA3MmVhMmUtZDRmYy00OTdiLWJjNTUtYjFjMjcwODJkNDAyLDIwMjItMTItMDYgMDk6MjQ6MTU=",
  "data": [
    {
      "id": "039866c2-8b23-44d3-b5b6-4183e418a73d",
      "object": "item",
      "folder_id": "PxhWpuzzyRz",
      "parent_id": null,
      "created_at": "2022-12-06T09:24:15.000000Z",
      "sort_order": "786432.000000000000000000000000000000",
      "deleted": false
    },
    {
      "id": "0072ea2e-d4fc-497b-bc55-b1c27082d402",
      "object": "item",
      "folder_id": "PxhWpuzzyRz",
      "parent_id": null,
      "created_at": "2022-12-06T09:24:15.000000Z",
      "sort_order": "458752.000000000000000000000000000000",
      "deleted": false
    }
  ]
}

In this example, the API response includes a pagination properties, which contains the before and after pagination cursors for the current page of data. These cursors can be used by the client in the next request to retrieve the next or previous page of data, as needed.

Authenticating requests

Authenticate requests to this API's endpoints by sending an Authorization header with the value "Bearer {your-token}".

Personal Access Token

If you have development account you can retrieve your token by visiting your profile page and clicking Create Token under Personal Token section.

This is only for a personal use - testing or developing personal integrations.

Create Application & Integration - (Clients)

If you have development account visit your profile page and create a new Client by clicking the Add Client button.

Give your application a name and put a redirect URL that you will be redirected to when a user authorizes your application.

A quick example application that shows how to get Access Token:

Profile

Get my profile data

requires authentication

The response contains all the data related to the current user, including some fields that are not visible to other users.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": 1302,
    "object": "user",
    "name": "Damian Peterson",
    "email": "damianpeterson@startinfinity.com",
    "photo_url": "https://app.startinfinity.com/profile/avatar.svg?name=Damian%20Peterson",
    "created_at": "2020-11-25T15:31:38.000000Z",
    "job": null,
    "location": null,
    "tagline": null,
    "preferences": [],
    "is_developer": true,
    "deleted": false
}
 

Request   

GET api/v2/profile

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Workspaces

List workspaces

requires authentication

Lists all workspaces that belong to the currently logged-in user.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces?limit=10&sort_by=created_at&sort_direction=desc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=",
    "after": "NjY5LDIwMjAtMTEtMjUgMTU6MzI6Mzg=",
    "data": [
        {
            "id": 669,
            "object": "workspace",
            "name": "Customer Success",
            "photo_url": null,
            "owner_id": 1302,
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

Boards

List boards

requires authentication

Lists all boards that belong to the workspace given.

Example request:
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"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "TEExZFc4aTFUVEssMjAyMC0xMS0yNSAxNTozMjozOA==",
    "after": "TEExZFc4aTFUVEssMjAyMC0xMS0yNSAxNTozMjozOA==",
    "data": [
        {
            "id": "LA1dW8i1TTK",
            "object": "board",
            "name": "Vacation Planning",
            "sort_order": "393216.000000000000000000000000000000",
            "color": "#4eb4f9",
            "description": null,
            "og_image": null,
            "user_ids": [],
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/boards

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

Get board

requires authentication

Get a single board by its id for the board given. The user needs to have access to the board in order to be able to fetch it.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
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",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "LA1dW8i1TTK",
    "object": "board",
    "name": "Vacation Planning",
    "sort_order": "393216.000000000000000000000000000000",
    "color": "#4eb4f9",
    "description": null,
    "og_image": null,
    "user_ids": [],
    "deleted": false
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Create board

requires authentication

Example request:
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" \
    --data "{
    \"name\": \"Development Tasks\",
    \"description\": \"Product Development board\",
    \"color\": \"#f57740\",
    \"user_ids\": []
}"
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",
};

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());
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'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": "zf6eUjSX8fM",
    "object": "board",
    "name": "Development Tasks",
    "sort_order": "458752.000000000000000000000000000000",
    "color": "#f57740",
    "description": "Product Development board",
    "og_image": null,
    "user_ids": [
        1302
    ],
    "deleted": false
}
 

Request   

POST api/v2/workspaces/{workspace}/boards

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

Body Parameters

name   string   

Example: Development Tasks

description   string  optional  

Example: Product Development board

color   string  optional  

Board color in the HEX format. Example: #f57740

user_ids   integer[]  optional  

Ids of the workspace members that will have board access. Current user will be added automatically

Attributes

List attributes

requires authentication

Lists all attributes belonging to the board given. The user needs to have access to the board in order to be able to fetch its attributes.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes?limit=10&sort_by=created_at&sort_direction=desc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": true,
    "before": "YjVlOTVlYzgtODBiYy00YTU1LWE5OTYtZGNlYTY2M2U0ZTZjLDIwMjEtMTItMTUgMTI6MjQ6NDQ=",
    "after": "NDZiMTcxYzUtMzJmYS00YmQ4LWIyM2EtZjJiZjQ2NDU2MzJjLDIwMjAtMTEtMjYgMTM6NTc6MTE=",
    "data": [
        {
            "id": "b5e95ec8-80bc-4a55-a996-dcea663e4e6c",
            "object": "attribute",
            "name": "Reference",
            "type": "reference",
            "default_data": null,
            "settings": {
                "folderId": "8FjZofz89PM"
            },
            "created_by": 1302,
            "created_at": "2021-12-15T12:24:44.000000Z",
            "deleted": false
        },
        {
            "id": "e3009b98-db05-4408-8414-c8ce5cd7c143",
            "object": "attribute",
            "name": "Cuisine",
            "type": "label",
            "default_data": [],
            "settings": {
                "multiple": true,
                "allowNew": true,
                "allowEmpty": true,
                "labels": [
                    {
                        "id": "3f68e105-d878-40d9-8e51-5919d92ab89d",
                        "name": "Spanish",
                        "color": "#92F3EC"
                    },
                    {
                        "id": "6bc19250-f233-4a6d-9ef7-620192b4147c",
                        "name": "Italian",
                        "color": "#D6C2FF"
                    },
                    {
                        "id": "5627cb6f-ef56-4972-8b67-ff899fa968b4",
                        "name": "Mexican",
                        "color": "#FFA2A2"
                    },
                    {
                        "id": "4f539a01-28ee-4d3c-867e-7cf92c9a0ef5",
                        "name": "Japanese",
                        "color": "#F3B2EA"
                    },
                    {
                        "id": "a7281c82-9fa4-4267-8bdf-beb25bdf0b88",
                        "name": "Seafood",
                        "color": "#B3EC8D"
                    }
                ]
            },
            "created_by": 1299,
            "created_at": "2020-11-26T13:57:11.000000Z",
            "deleted": false
        },
        {
            "id": "d2be0368-c5cd-43da-ae32-20a41304e9b1",
            "object": "attribute",
            "name": "Image",
            "type": "attachments",
            "default_data": [],
            "settings": [],
            "created_by": 1299,
            "created_at": "2020-11-26T13:57:11.000000Z",
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/attributes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

Get attribute

requires authentication

Get a single attribute by its id for the board given. The user needs to have access to the board in order to be able to fetch an attribute.

Example request:
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"
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",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "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"
            },
            {
                "id": "7018cc1a-366a-4b76-8a17-6b70fd9a9709",
                "name": "$$$",
                "color": "#FFE197"
            },
            {
                "id": "0f1fef0b-5ae6-4864-b1d2-e1ccf8423154",
                "name": "$$$$",
                "color": "#D6C2FF"
            }
        ]
    },
    "created_by": 1299,
    "created_at": "2020-11-26T13:57:11.000000Z",
    "deleted": false
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/attributes/{attribute}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

attribute   string   

Attribute ID Example: 46b171c5-32fa-4bd8-b23a-f2bf4645632c

Create attribute

requires authentication

Example request:
curl --request POST \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"voluptate\",
    \"type\": \"number\",
    \"default_data\": \"0\",
    \"settings\": {
        \"delimiter\": \".\"
    }
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "voluptate",
    "type": "number",
    "default_data": "0",
    "settings": {
        "delimiter": "."
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes'
payload = {
    "name": "voluptate",
    "type": "number",
    "default_data": "0",
    "settings": {
        "delimiter": "."
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "0658b110-f6d0-4600-b45b-7a091dec2623",
    "object": "attribute",
    "name": "voluptate",
    "type": "number",
    "default_data": 0,
    "settings": {
        "delimiter": "."
    },
    "created_by": 1302,
    "created_at": "2024-01-05T10:54:23.000000Z",
    "deleted": false
}
 

Request   

POST api/v2/workspaces/{workspace}/boards/{board}/attributes

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

name   string   

Example: voluptate

type   string   

Available types: attachments, checkbox, created_at, created_by, date, email, label, links, longtext, members, number, phone, progress, rating, source_folder, text, updated_at, vote Example: number

default_data   string   

Default data should be valid value for a given Attribute Type. Example: 0

settings   object   

Depending on the Attribute Type, settings will have different parameters.

delimiter   string  optional  

. Example: .

Update attribute

requires authentication

Example request:
curl --request PUT \
    "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" \
    --data "{
    \"name\": \"repudiandae\",
    \"type\": \"number\",
    \"default_data\": \"0\",
    \"settings\": {
        \"delimiter\": \".\"
    }
}"
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",
};

let body = {
    "name": "repudiandae",
    "type": "number",
    "default_data": "0",
    "settings": {
        "delimiter": "."
    }
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/attributes/46b171c5-32fa-4bd8-b23a-f2bf4645632c'
payload = {
    "name": "repudiandae",
    "type": "number",
    "default_data": "0",
    "settings": {
        "delimiter": "."
    }
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
    "object": "attribute",
    "name": "repudiandae",
    "type": "number",
    "default_data": 0,
    "settings": {
        "delimiter": "."
    },
    "created_by": 1299,
    "created_at": "2020-11-26T13:57:11.000000Z",
    "deleted": false
}
 

Request   

PUT api/v2/workspaces/{workspace}/boards/{board}/attributes/{attribute}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

attribute   string   

Attribute ID Example: 46b171c5-32fa-4bd8-b23a-f2bf4645632c

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

name   string   

Attribute name Example: repudiandae

type   string   

Available types: attachments, checkbox, created_at, created_by, date, email, label, links, longtext, members, number, phone, progress, rating, source_folder, text, updated_at, vote Example: number

default_data   string   

Default data should be valid value for a given Attribute Type. Example: 0

settings   object   

Depending on the Attribute Type, settings will have different parameters.

delimiter   string  optional  

. Example: .

Delete attribute

requires authentication

Example request:
curl --request DELETE \
    "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"
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",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
    "object": "attribute",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/attributes/{attribute}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

attribute   string   

Attribute ID Example: 46b171c5-32fa-4bd8-b23a-f2bf4645632c

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Items

List items

requires authentication

Lists paginated items. Item properties can be expanded.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items?limit=10&sort_by=created_at&sort_direction=desc&expand[]=values.attribute&folder_id=APwqfkShQuR&q=pair" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
    "expand[0]": "values.attribute",
    "folder_id": "APwqfkShQuR",
    "q": "pair",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
  'expand[0]': 'values.attribute',
  'folder_id': 'APwqfkShQuR',
  'q': 'pair',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "YzQ2NzA2NzItMDNlMC00YjMyLThiMGUtY2NmNGVlMjBjYTVhLDIwMjAtMTEtMjYgMTM6NTc6MTE=",
    "after": "YzQ2NzA2NzItMDNlMC00YjMyLThiMGUtY2NmNGVlMjBjYTVhLDIwMjAtMTEtMjYgMTM6NTc6MTE=",
    "data": [
        {
            "id": "c4670672-03e0-4b32-8b0e-ccf4ee20ca5a",
            "object": "item",
            "folder_id": "APwqfkShQuR",
            "parent_id": null,
            "created_at": "2020-11-26T13:57:11.000000Z",
            "sort_order": "1442304.000000000000000000000000000000",
            "values": [
                {
                    "id": "7abbf97c-a53a-420c-a947-a6e728ec2fec",
                    "object": "value",
                    "data": [
                        {
                            "id": "dd3493a6-0d22-4c02-8c3e-aa045641caac",
                            "name": "6 T-shirts",
                            "done": false
                        },
                        {
                            "id": "6dc9f3d1-f768-4cae-8f10-4fee61788f8f",
                            "name": "3 skirts",
                            "done": false
                        },
                        {
                            "id": "fc101e1d-49d0-43f2-93f7-d7aaa321b77d",
                            "name": "1 dress",
                            "done": false
                        },
                        {
                            "id": "20464107-fc21-4301-b172-e56d8ab12031",
                            "name": "2 pairs of pants",
                            "done": false
                        },
                        {
                            "id": "f6b2f289-600a-4e36-ab87-bf7384524e2c",
                            "name": "7 pairs of undies",
                            "done": false
                        },
                        {
                            "id": "1915e109-7c67-4f11-afa4-0c4e40e45120",
                            "name": "2 pairs of shoes",
                            "done": false
                        }
                    ],
                    "attribute_id": "8712b2d2-7e59-41de-b8ee-7b00d08ca625",
                    "item_id": "c4670672-03e0-4b32-8b0e-ccf4ee20ca5a",
                    "attribute": {
                        "id": "8712b2d2-7e59-41de-b8ee-7b00d08ca625",
                        "object": "attribute",
                        "name": "Checklist",
                        "type": "checklist",
                        "default_data": [],
                        "settings": [],
                        "created_by": 1299,
                        "created_at": "2020-11-26T13:57:11.000000Z",
                        "deleted": false
                    },
                    "deleted": false
                },
                {
                    "id": "1df86461-d6e5-4772-b447-7ff5bba22fa1",
                    "object": "value",
                    "data": "Pack the suitcase",
                    "attribute_id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
                    "item_id": "c4670672-03e0-4b32-8b0e-ccf4ee20ca5a",
                    "attribute": {
                        "id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
                        "object": "attribute",
                        "name": "Name",
                        "type": "text",
                        "default_data": "",
                        "settings": [],
                        "created_by": null,
                        "created_at": "2020-11-25T15:32:39.000000Z",
                        "deleted": false
                    },
                    "deleted": false
                }
            ],
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/items

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

expand   string[]  optional  

expand response with sub-models. Possible options values, values.attribute, created_by, folder . Must be one of values, values.attribute, folder, or created_by.

folder_id   string  optional  

Filter items by folder id. Example: APwqfkShQuR

q   string  optional  

Search items by the keyword, it will search by all attribute types giving priority to text value types. Example: pair

Create item

requires authentication

Example request:
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" \
    --data "{
    \"folder_id\": \"APwqfkShQuR\",
    \"values\": [
        {
            \"attribute_id\": \"e9eabdcd-66be-41d4-a88c-bdf8d05c28a9\",
            \"data\": \"test\"
        }
    ]
}"
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",
};

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());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items'
payload = {
    "folder_id": "APwqfkShQuR",
    "values": [
        {
            "attribute_id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
            "data": "test"
        }
    ]
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": "ca1324c1-9c4c-43a6-94e0-1157575ce33b",
    "object": "item",
    "folder_id": "APwqfkShQuR",
    "parent_id": null,
    "created_at": "2024-01-05T10:54:23.000000Z",
    "sort_order": 2233344,
    "deleted": false
}
 

Request   

POST api/v2/workspaces/{workspace}/boards/{board}/items

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

folder_id   string   

Example: APwqfkShQuR

values   object  optional  
attribute_id   string   

Example: e9eabdcd-66be-41d4-a88c-bdf8d05c28a9

data   string   

Example: test

parent_id   string  optional  

optional Example:

Get item

requires authentication

Get item by its id. The item must belong to the board given. Item properties can be expanded.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764?expand[]=values.attribute" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764"
);

const params = {
    "expand[0]": "values.attribute",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764'
params = {
  'expand[0]': 'values.attribute',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "id": "315a6847-26a7-4cf6-a66e-1a6b3c62a764",
    "object": "item",
    "folder_id": "APwqfkShQuR",
    "parent_id": null,
    "created_at": "2020-11-26T13:57:11.000000Z",
    "sort_order": "852480.000000000000000000000000000000",
    "values": [
        {
            "id": "1990ccd8-6f39-41f9-85f9-a41d05112415",
            "object": "value",
            "data": true,
            "attribute_id": "3f723f19-5494-484b-a052-716d448c7629",
            "item_id": "315a6847-26a7-4cf6-a66e-1a6b3c62a764",
            "attribute": {
                "id": "3f723f19-5494-484b-a052-716d448c7629",
                "object": "attribute",
                "name": "Done",
                "type": "checkbox",
                "default_data": false,
                "settings": [],
                "created_by": 1299,
                "created_at": "2020-11-26T13:57:11.000000Z",
                "deleted": false
            },
            "deleted": false
        },
        {
            "id": "771ed5da-ed2e-419e-a310-db013c3d0968",
            "object": "value",
            "data": "Choose the dates",
            "attribute_id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
            "item_id": "315a6847-26a7-4cf6-a66e-1a6b3c62a764",
            "attribute": {
                "id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
                "object": "attribute",
                "name": "Name",
                "type": "text",
                "default_data": "",
                "settings": [],
                "created_by": null,
                "created_at": "2020-11-25T15:32:39.000000Z",
                "deleted": false
            },
            "deleted": false
        }
    ],
    "deleted": false
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/items/{item}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Query Parameters

expand   string[]  optional  

expand response with sub-models. Possible options values, values.attribute, created_by, folder

Update item

requires authentication

Example request:
curl --request PUT \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"folder_id\": \"APwqfkShQuR\",
    \"values\": [
        {
            \"attribute_id\": \"e9eabdcd-66be-41d4-a88c-bdf8d05c28a9\",
            \"data\": \"test2\"
        }
    ],
    \"parent_id\": \"rem\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "folder_id": "APwqfkShQuR",
    "values": [
        {
            "attribute_id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
            "data": "test2"
        }
    ],
    "parent_id": "rem"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764'
payload = {
    "folder_id": "APwqfkShQuR",
    "values": [
        {
            "attribute_id": "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
            "data": "test2"
        }
    ],
    "parent_id": "rem"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "315a6847-26a7-4cf6-a66e-1a6b3c62a764",
    "object": "item",
    "folder_id": "APwqfkShQuR",
    "parent_id": "rem",
    "created_at": "2020-11-26T13:57:11.000000Z",
    "sort_order": "852480.000000000000000000000000000000",
    "deleted": false
}
 

Request   

PUT api/v2/workspaces/{workspace}/boards/{board}/items/{item}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

Body Parameters

folder_id   string.  optional  

Example: APwqfkShQuR

values   object  optional  
attribute_id   string.  optional  

Example: e9eabdcd-66be-41d4-a88c-bdf8d05c28a9

data   string.  optional  

Example: test2

parent_id   string  optional  

Example: rem

Delete item

requires authentication

Example request:
curl --request DELETE \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "315a6847-26a7-4cf6-a66e-1a6b3c62a764",
    "object": "item",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/items/{item}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Delete Value

requires authentication

Delete Value

Example request:
curl --request DELETE \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/values/1990ccd8-6f39-41f9-85f9-a41d05112415" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/values/1990ccd8-6f39-41f9-85f9-a41d05112415"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/values/1990ccd8-6f39-41f9-85f9-a41d05112415'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "1990ccd8-6f39-41f9-85f9-a41d05112415",
    "object": "value",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/items/{item}/values/{value}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

value   string   

Value ID Example: 1990ccd8-6f39-41f9-85f9-a41d05112415

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Comments

List comments

requires authentication

Lists the comments of the board and item given. Comment's property 'created_by' can be included in the response's body by using the 'expand' query parameter.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments?limit=10&sort_by=created_at&sort_direction=desc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "YmZlZmVjN2UtNWJhNi00Mjg3LWFjNGEtNzUzMzU3NTg0ZjE2LDIwMjAtMTEtMjYgMTQ6MDI6Mjc=",
    "after": "YmZlZmVjN2UtNWJhNi00Mjg3LWFjNGEtNzUzMzU3NTg0ZjE2LDIwMjAtMTEtMjYgMTQ6MDI6Mjc=",
    "data": [
        {
            "id": "bfefec7e-5ba6-4287-ac4a-753357584f16",
            "object": "comment",
            "parent_id": null,
            "text": "<p>Reminder to myself: Check the calendar</p>",
            "created_at": "2020-11-26T14:02:27.000000Z",
            "created_by": 1302,
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/items/{item}/comments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

expand   string[]  optional  

expand response with sub-models. Possible options item, item.values and created_by

Get comment

requires authentication

Get comment by its id. The comment must belong to the board and item given. Comment's property 'created_by' can be included in the response's body by using the 'expand' query parameter.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments/bfefec7e-5ba6-4287-ac4a-753357584f16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments/bfefec7e-5ba6-4287-ac4a-753357584f16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "bfefec7e-5ba6-4287-ac4a-753357584f16",
    "object": "comment",
    "parent_id": null,
    "text": "<p>Reminder to myself: Check the calendar</p>",
    "created_at": "2020-11-26T14:02:27.000000Z",
    "created_by": 1302,
    "deleted": false
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/items/{item}/comments/{comment}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

comment   string   

Comment ID Example: bfefec7e-5ba6-4287-ac4a-753357584f16

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

Query Parameters

expand   string[]  optional  

expand response with sub-models. Possible options item, item.values and created_by

Create comment

requires authentication

Example request:
curl --request POST \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"text\": \"<p>Hello Everyone!<\\/p>\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "text": "<p>Hello Everyone!<\/p>"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments'
payload = {
    "text": "<p>Hello Everyone!<\/p>"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": "928460df-9497-4d95-a0d5-a2c0891cecf3",
    "object": "comment",
    "parent_id": null,
    "text": "<p>Hello Everyone!</p>",
    "created_at": "2024-01-05T10:54:23.000000Z",
    "created_by": 1302,
    "deleted": false
}
 

Request   

POST api/v2/workspaces/{workspace}/boards/{board}/items/{item}/comments

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

Body Parameters

text   string  optional  

The body of the comment, it can be in the HTML format. Example: <p>Hello Everyone!</p>

parent_id   parent  optional  

comment id

Update comment

requires authentication

Example request:
curl --request PUT \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments/bfefec7e-5ba6-4287-ac4a-753357584f16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"text\": \"sapiente\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments/bfefec7e-5ba6-4287-ac4a-753357584f16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "text": "sapiente"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
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'
payload = {
    "text": "sapiente"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "bfefec7e-5ba6-4287-ac4a-753357584f16",
    "object": "comment",
    "parent_id": null,
    "text": "sapiente",
    "created_at": "2020-11-26T14:02:27.000000Z",
    "created_by": 1302,
    "deleted": false
}
 

Request   

PUT api/v2/workspaces/{workspace}/boards/{board}/items/{item}/comments/{comment}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

comment   string   

Comment ID Example: bfefec7e-5ba6-4287-ac4a-753357584f16

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

Body Parameters

text   string  optional  

The body of the comment Example: sapiente

parent_id   parent  optional  

comment id

Delete comment

requires authentication

Example request:
curl --request DELETE \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments/bfefec7e-5ba6-4287-ac4a-753357584f16" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/items/315a6847-26a7-4cf6-a66e-1a6b3c62a764/comments/bfefec7e-5ba6-4287-ac4a-753357584f16"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "bfefec7e-5ba6-4287-ac4a-753357584f16",
    "object": "comment",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/items/{item}/comments/{comment}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

comment   string   

Comment ID Example: bfefec7e-5ba6-4287-ac4a-753357584f16

item   string   

Item ID Example: 315a6847-26a7-4cf6-a66e-1a6b3c62a764

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Folders

List folders

requires authentication

Lists all folders that belong to the board given.

Example request:
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"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "WG1XS3dZTWZOeFEsMjAyMC0xMS0yNiAxMzo1NzoxMQ==",
    "after": "OEZqWm9mejg5UE0sMjAyMC0xMS0yNiAxMzo1NzoxMQ==",
    "data": [
        {
            "id": "XmWKwYMfNxQ",
            "object": "folder",
            "name": "What to See in Barcelona",
            "sort_order": "589824.000000000000000000000000000000",
            "color": null,
            "settings": [],
            "attribute_ids": [
                "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
                "012fc63b-b690-4db1-98a1-2f018f8941ce",
                "d2be0368-c5cd-43da-ae32-20a41304e9b1",
                "5d4ec2cf-627e-4e35-b49f-c73e1fd85c47",
                "8c78f989-5189-4b8c-b97f-96453007dc15",
                "73ac1c73-a2f1-4542-b951-351b8cda4c87"
            ],
            "parent_id": "LA1dW8i1TTK",
            "deleted": false
        },
        {
            "id": "APwqfkShQuR",
            "object": "folder",
            "name": "Preparation",
            "sort_order": "524288.000000000000000000000000000000",
            "color": null,
            "settings": [],
            "attribute_ids": [
                "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
                "3f723f19-5494-484b-a052-716d448c7629",
                "ab9ba009-da5d-4828-8c47-c53199f9b09b",
                "8712b2d2-7e59-41de-b8ee-7b00d08ca625",
                "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
                "b5e95ec8-80bc-4a55-a996-dcea663e4e6c"
            ],
            "parent_id": "LA1dW8i1TTK",
            "deleted": false
        },
        {
            "id": "8FjZofz89PM",
            "object": "folder",
            "name": "Restaurants ",
            "sort_order": "655360.000000000000000000000000000000",
            "color": null,
            "settings": [],
            "attribute_ids": [
                "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
                "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
                "9dfaf425-4b50-433d-b4d2-0c3a479c5119",
                "73ac1c73-a2f1-4542-b951-351b8cda4c87",
                "e3009b98-db05-4408-8414-c8ce5cd7c143"
            ],
            "parent_id": "LA1dW8i1TTK",
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/folders

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

Get folder

requires authentication

Get folder by id that belong to the board given.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "8FjZofz89PM",
    "object": "folder",
    "name": "Restaurants ",
    "sort_order": "655360.000000000000000000000000000000",
    "color": null,
    "settings": [],
    "attribute_ids": [
        "e9eabdcd-66be-41d4-a88c-bdf8d05c28a9",
        "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
        "9dfaf425-4b50-433d-b4d2-0c3a479c5119",
        "73ac1c73-a2f1-4542-b951-351b8cda4c87",
        "e3009b98-db05-4408-8414-c8ce5cd7c143"
    ],
    "parent_id": "LA1dW8i1TTK",
    "deleted": false
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/folders/{folder}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

folder   string   

Folder ID Example: 8FjZofz89PM

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Create folder

requires authentication

Example request:
curl --request POST \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"mollitia\",
    \"color\": \"#f57740\",
    \"parent_id\": \"LA1dW8i1TTK\",
    \"attribute_ids\": [],
    \"sort_order\": 16,
    \"settings\": []
}"
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",
};

let body = {
    "name": "mollitia",
    "color": "#f57740",
    "parent_id": "LA1dW8i1TTK",
    "attribute_ids": [],
    "sort_order": 16,
    "settings": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders'
payload = {
    "name": "mollitia",
    "color": "#f57740",
    "parent_id": "LA1dW8i1TTK",
    "attribute_ids": [],
    "sort_order": 16,
    "settings": []
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": "WM9G8uMuEiL",
    "object": "folder",
    "name": "mollitia",
    "sort_order": 16,
    "color": "#f57740",
    "settings": [],
    "attribute_ids": [],
    "parent_id": "LA1dW8i1TTK",
    "deleted": false
}
 

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

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

name   string   

Example: mollitia

color   string  optional  

Folder color in the HEX format. Example: #f57740

parent_id   string  optional  

If folder is sub-folder set parent_id otherwise it will be the top level folder. Example: LA1dW8i1TTK

attribute_ids   object  optional  

An array of attribute IDs that are used in the folder.

sort_order   integer  optional  

Example: 16

settings   object  optional  

Meta data for the folder, it can contain many things.

Update folder

requires authentication

Example request:
curl --request PUT \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"repellendus\",
    \"color\": \"animi\",
    \"parent_id\": \"LA1dW8i1TTK\",
    \"attribute_ids\": [
        \"e3009b98-db05-4408-8414-c8ce5cd7c143\",
        \"ab9ba009-da5d-4828-8c47-c53199f9b09b\"
    ],
    \"sort_order\": 18
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "repellendus",
    "color": "animi",
    "parent_id": "LA1dW8i1TTK",
    "attribute_ids": [
        "e3009b98-db05-4408-8414-c8ce5cd7c143",
        "ab9ba009-da5d-4828-8c47-c53199f9b09b"
    ],
    "sort_order": 18
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM'
payload = {
    "name": "repellendus",
    "color": "animi",
    "parent_id": "LA1dW8i1TTK",
    "attribute_ids": [
        "e3009b98-db05-4408-8414-c8ce5cd7c143",
        "ab9ba009-da5d-4828-8c47-c53199f9b09b"
    ],
    "sort_order": 18
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "8FjZofz89PM",
    "object": "folder",
    "name": "repellendus",
    "sort_order": "18.000000000000000000000000000000",
    "color": "animi",
    "settings": [],
    "attribute_ids": [
        "e3009b98-db05-4408-8414-c8ce5cd7c143",
        "ab9ba009-da5d-4828-8c47-c53199f9b09b"
    ],
    "parent_id": "LA1dW8i1TTK",
    "deleted": false
}
 

Request   

PUT api/v2/workspaces/{workspace}/boards/{board}/folders/{folder}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

folder   string   

Folder ID Example: 8FjZofz89PM

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

name   string   

Example: repellendus

color   string  optional  

Folder color in the HEX format. Example: animi

parent_id   string  optional  

Example: LA1dW8i1TTK

attribute_ids   string[]  optional  

An array of attribute IDs that are used in the folder.

sort_order   integer  optional  

Example: 18

Delete folder

requires authentication

Deletes a folder by its id.

Example request:
curl --request DELETE \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/folders/8FjZofz89PM"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "8FjZofz89PM",
    "object": "folder",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/folders/{folder}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

folder   string   

Folder ID Example: 8FjZofz89PM

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Attachments

This endpoint is used as a first part of uploading file to the item. The response will contain the attachment object, which can be used when creating a new item.

// When creating the item with attachments, value should have the following format:
{
  "values": [{
    "attribute_id": "a787da0a-7e17-48e5-bbf0-9142f19ed98f",
    "data": [{"id": "<attachment_id>"}]
  }]
}

Uploaded attachments are not publicly accessible. This means that when fetching items with attachments, links are publicly available for 2 hours and after that, they have to be re-fetched again.

Create attachment from file

requires authentication

Upload files by submitting a file content as a multipart/form-data.

 // Example: How to upload file with JavaScript
 const form = new FormData();
 form.append('file', document.getElementById('file-input'));
 axios.post('/api/v2/workspace/669/attachments/file', form);
Example request:
curl --request POST \
    "https://app.startinfinity.com/api/v2/workspaces/669/attachments/file" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "file=@/tmp/phpPdxROs" 
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/attachments/file"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/attachments/file'
files = {
  'file': open('/tmp/phpPdxROs', 'rb')}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, files=files)
response.json()

Example response (201):


{
    "id": 86245,
    "link": "https://app.startinfinity.com/storage/item-files/669/U94UdYwqJKM9jhUf23EwRajJHNFzy7bHUx2y0K8T.jpg",
    "path": "item-files/669/U94UdYwqJKM9jhUf23EwRajJHNFzy7bHUx2y0K8T.jpg",
    "original_name": "test.jpg",
    "filesize": 0,
    "thumb": null,
    "created_at": "2024-01-05T10:54:23.000000Z",
    "updated_at": "2024-01-05T10:54:23.000000Z",
    "team_id": 669,
    "deleted_at": null,
    "checked_at": null,
    "extension": "jpg",
    "basename": "test.jpg",
    "filename": "test"
}
 

Request   

POST api/v2/workspaces/{workspace}/attachments/file

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

Body Parameters

file   file   

File to upload Example: /tmp/phpPdxROs

Create an attachment from URL

requires authentication

Download the attachment from a given URL, store it, and return an attachment object.

Example request:
curl --request POST \
    "https://app.startinfinity.com/api/v2/workspaces/669/attachments/url" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"url\": \"https:\\/\\/picsum.photos\\/seed\\/picsum\\/200\\/300\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/attachments/url"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "https:\/\/picsum.photos\/seed\/picsum\/200\/300"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/attachments/url'
payload = {
    "url": "https:\/\/picsum.photos\/seed\/picsum\/200\/300"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": 86246,
    "link": "https://app.startinfinity.com/storage/item-files/669/vqcv1veEhF34OapvC5xEWjfPU0P6Jzyk13MoITIo.",
    "path": "item-files/669/vqcv1veEhF34OapvC5xEWjfPU0P6Jzyk13MoITIo.",
    "original_name": "300",
    "filesize": 6313,
    "thumb": null,
    "created_at": "2024-01-05T10:54:24.000000Z",
    "updated_at": "2024-01-05T10:54:24.000000Z",
    "team_id": 669,
    "deleted_at": null,
    "checked_at": null,
    "extension": "",
    "basename": "300",
    "filename": "300"
}
 

Request   

POST api/v2/workspaces/{workspace}/attachments/url

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

Body Parameters

url   string   

Attachment URL. Example: https://picsum.photos/seed/picsum/200/300

Views

Folder views (tabs) is a configuration of how data will be presented in a given folder. It can contain view type (e.g. column or table), filters (what items to show) and many other settings that can be specific for the view (for example last viewed date in the calendar view).

List Views

requires authentication

List from the folder

Example request:
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"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
    "folder_id": "8FjZofz89PM",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
  'folder_id': '8FjZofz89PM',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "MTFjM2Q1NzUtODMwOS00Y2VmLTk1ZDMtMTdmMThhZGVhMWIzLA==",
    "after": "MTFjM2Q1NzUtODMwOS00Y2VmLTk1ZDMtMTdmMThhZGVhMWIzLA==",
    "data": [
        {
            "id": "11c3d575-8309-4cef-95d3-17f18adea1b3",
            "object": "folderview",
            "folder_id": "8FjZofz89PM",
            "name": "Restaurant List",
            "type": "list",
            "sort_order": "65536.000000000000000000000000000000",
            "settings": {
                "attributes": [],
                "includeSubfolders": false,
                "collapsedGroups": [],
                "filter": {
                    "conditions": [],
                    "combinator": "AND"
                },
                "sort": {
                    "conditions": [
                        {
                            "attributeId": "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
                            "settings": {
                                "direction": "asc"
                            }
                        }
                    ]
                }
            },
            "created_by": 1299,
            "created_at": null,
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/views

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

folder_id   string  optional  

Views that belong to this folder. Example: 8FjZofz89PM

Get views

requires authentication

Get views by id that belong to the folder given.

Example request:
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"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views/11c3d575-8309-4cef-95d3-17f18adea1b3"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views/11c3d575-8309-4cef-95d3-17f18adea1b3'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "11c3d575-8309-4cef-95d3-17f18adea1b3",
    "object": "folderview",
    "folder_id": "8FjZofz89PM",
    "name": "Restaurant List",
    "type": "list",
    "sort_order": "65536.000000000000000000000000000000",
    "settings": {
        "attributes": [],
        "includeSubfolders": false,
        "collapsedGroups": [],
        "filter": {
            "conditions": [],
            "combinator": "AND"
        },
        "sort": {
            "conditions": [
                {
                    "attributeId": "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
                    "settings": {
                        "direction": "asc"
                    }
                }
            ]
        }
    },
    "created_by": 1299,
    "created_at": null,
    "deleted": false
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/views/{view}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

view   string   

Folder View ID Example: 11c3d575-8309-4cef-95d3-17f18adea1b3

Create view

requires authentication

Create a view

Example request:
curl --request POST \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"List of Tasks\",
    \"folder_id\": \"8FjZofz89PM\",
    \"type\": \"list\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "List of Tasks",
    "folder_id": "8FjZofz89PM",
    "type": "list"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views'
payload = {
    "name": "List of Tasks",
    "folder_id": "8FjZofz89PM",
    "type": "list"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": "9BtnywTGQXS",
    "object": "folderview",
    "folder_id": "8FjZofz89PM",
    "name": "List of Tasks",
    "type": "list",
    "sort_order": null,
    "settings": [],
    "created_by": 1302,
    "created_at": "2024-01-05T10:54:23.000000Z",
    "deleted": false
}
 

Request   

POST api/v2/workspaces/{workspace}/boards/{board}/views

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

name   string   

Example: List of Tasks

folder_id   string   

Example: 8FjZofz89PM

type   string   

Example: list

Update view

requires authentication

Get views by id that belong to the folder given.

Example request:
curl --request PUT \
    "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" \
    --data "{
    \"type\": \"list\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views/11c3d575-8309-4cef-95d3-17f18adea1b3"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "list"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views/11c3d575-8309-4cef-95d3-17f18adea1b3'
payload = {
    "type": "list"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": "11c3d575-8309-4cef-95d3-17f18adea1b3",
    "object": "folderview",
    "folder_id": "8FjZofz89PM",
    "name": "Restaurant List",
    "type": "list",
    "sort_order": "65536.000000000000000000000000000000",
    "settings": {
        "attributes": [],
        "includeSubfolders": false,
        "collapsedGroups": [],
        "filter": {
            "conditions": [],
            "combinator": "AND"
        },
        "sort": {
            "conditions": [
                {
                    "attributeId": "46b171c5-32fa-4bd8-b23a-f2bf4645632c",
                    "settings": {
                        "direction": "asc"
                    }
                }
            ]
        }
    },
    "created_by": 1299,
    "created_at": null,
    "deleted": false
}
 

Request   

PUT api/v2/workspaces/{workspace}/boards/{board}/views/{view}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

view   string   

Folder View ID Example: 11c3d575-8309-4cef-95d3-17f18adea1b3

Body Parameters

type   string   

Example: list

Delete view

requires authentication

Delete the view

Example request:
curl --request DELETE \
    "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"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views/11c3d575-8309-4cef-95d3-17f18adea1b3"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/views/11c3d575-8309-4cef-95d3-17f18adea1b3'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "11c3d575-8309-4cef-95d3-17f18adea1b3",
    "object": "folderview",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/views/{view}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

view   string   

Folder View ID Example: 11c3d575-8309-4cef-95d3-17f18adea1b3

Members

Invite Member

requires authentication

Invite the user into the workspace.

Example request:
curl --request POST \
    "https://app.startinfinity.com/api/v2/workspaces/669/members/invite" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"user@example.com\",
    \"role\": \"full-member\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/members/invite"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "user@example.com",
    "role": "full-member"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/members/invite'
payload = {
    "email": "user@example.com",
    "role": "full-member"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": 1300,
    "object": "user",
    "name": "Jane Doe",
    "email": "user@example.com",
    "photo_url": "https://app.startinfinity.com/profile/avatar.svg?name=Jane%20Doe",
    "job": null,
    "location": null,
    "tagline": null,
    "created_at": "2021-05-17T14:12:10.000000Z",
    "deleted": false
}
 

Request   

POST api/v2/workspaces/{workspace}/members/invite

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

Body Parameters

email   string   

Email of the user that will be invited to the workspace. Example: user@example.com

role   string  optional  

Role that will user have in the workspace. Possible values: 'restricted-member', 'full-member', 'admin. default: restricted-member Example: full-member

Add Member

requires authentication

Add a member to the workspace

Example request:
curl --request PUT \
    "https://app.startinfinity.com/api/v2/workspaces/669/members/1300" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"role\": \"full-member\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/members/1300"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "role": "full-member"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/members/1300'
payload = {
    "role": "full-member"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "id": 1300,
    "object": "user",
    "name": "Jane Doe",
    "email": "user@example.com",
    "photo_url": "https://app.startinfinity.com/profile/avatar.svg?name=Jane%20Doe",
    "job": null,
    "location": null,
    "tagline": null,
    "created_at": "2021-05-17T14:12:10.000000Z",
    "deleted": false
}
 

Request   

PUT api/v2/workspaces/{workspace}/members/{user}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user   integer   

Id of the existing user that should be added to the workspace. Example: 1300

workspace   string   

Workspace ID Example: 669

Body Parameters

role   string  optional  

Role that will user have in the workspace. Possible values: 'restricted-member', 'full-member', 'admin. default: restricted-member Example: full-member

Remove Member

requires authentication

Remove member from the workspace

Example request:
curl --request DELETE \
    "https://app.startinfinity.com/api/v2/workspaces/669/members/1300" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/members/1300"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/members/1300'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": 1300,
    "object": "user",
    "name": "Jane Doe",
    "email": "user@example.com",
    "photo_url": "https://app.startinfinity.com/profile/avatar.svg?name=Jane%20Doe",
    "job": null,
    "location": null,
    "tagline": null,
    "created_at": "2021-05-17T14:12:10.000000Z",
    "deleted": false
}
 

Request   

DELETE api/v2/workspaces/{workspace}/members/{user}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user   integer   

Id of the user that should be removed from the workspace. Example: 1300

workspace   string   

Workspace ID Example: 669

Users

List users

requires authentication

Lists all users that belong to the current workspace given.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/users?limit=10&sort_by=created_at&sort_direction=desc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/users"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/users'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "MTMwMiwyMDIwLTExLTI1IDE1OjMxOjM4",
    "after": "MTMwMiwyMDIwLTExLTI1IDE1OjMxOjM4",
    "data": [
        {
            "id": 1302,
            "object": "user",
            "name": "Damian Peterson",
            "email": "damianpeterson@startinfinity.com",
            "photo_url": "https://app.startinfinity.com/profile/avatar.svg?name=Damian%20Peterson",
            "job": null,
            "location": null,
            "tagline": null,
            "created_at": "2020-11-25T15:31:38.000000Z",
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/users

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

List users

requires authentication

Lists all users that belong to the current workspace given.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/members?limit=10&sort_by=created_at&sort_direction=desc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/members"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/members'
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "MTMwMiwyMDIwLTExLTI1IDE1OjMxOjM4",
    "after": "MTMwMiwyMDIwLTExLTI1IDE1OjMxOjM4",
    "data": [
        {
            "id": 1302,
            "object": "user",
            "name": "Damian Peterson",
            "email": "damianpeterson@startinfinity.com",
            "photo_url": "https://app.startinfinity.com/profile/avatar.svg?name=Damian%20Peterson",
            "job": null,
            "location": null,
            "tagline": null,
            "created_at": "2020-11-25T15:31:38.000000Z",
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/members

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

References

List references

requires authentication

Lists item references.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references?limit=10&sort_by=created_at&sort_direction=desc" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"from_item_id\": \"fugit\",
    \"to_item_id\": \"minima\"
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references"
);

const params = {
    "limit": "10",
    "sort_by": "created_at",
    "sort_direction": "desc",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "from_item_id": "fugit",
    "to_item_id": "minima"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references'
payload = {
    "from_item_id": "fugit",
    "to_item_id": "minima"
}
params = {
  'limit': '10',
  'sort_by': 'created_at',
  'sort_direction': 'desc',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "",
    "after": "",
    "data": []
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/references

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Query Parameters

limit   integer  optional  

Limit of items between 1 and 100. Must be at least 1. Must not be greater than 100. Example: 10

sort_by   string  optional  

Sort items by id or created date - default is created_at. Must be one of id or created_at. Example: created_at

sort_direction   string  optional  

Sort direction asc or desc - default is desc. Example: desc. Must be one of asc or desc. Example: desc

after   string  optional  

Use this parameter to get items after last item. Use this to get to the next page.

before   string  optional  

Use this parameter to get items before first item.

from_item_id   string  optional  

Filter items by source item id

to_item_id   string  optional  

Filter items by source item id

attribute_id   string  optional  

Filter items by source item id

Body Parameters

from_item_id   string  optional  

Example: fugit

to_item_id   string  optional  

Example: minima

Get reference

requires authentication

Get reference by its id for the given board.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references/11c3d575-8309-4cef-95d3-17f18adea1b3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references/11c3d575-8309-4cef-95d3-17f18adea1b3"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references/11c3d575-8309-4cef-95d3-17f18adea1b3'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "id": "11c3d575-8309-4cef-95d3-17f18adea1b3",
    "object": "reference",
    "attribute_id": null,
    "from_item_id": null,
    "to_item_id": null
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/references/{reference}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

reference   string  optional  

The id of the folder view. Example: 11c3d575-8309-4cef-95d3-17f18adea1b3

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Create reference

requires authentication

Creates a reference between two items.

Example request:
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" \
    --data "{
    \"attribute_id\": \"b5e95ec8-80bc-4a55-a996-dcea663e4e6c\",
    \"from_item_id\": \"341a89c9-618e-40ba-92e1-1e12c83b69a6\",
    \"to_item_id\": \"033709ef-aa01-4eb8-b4d0-5733e283c160\"
}"
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",
};

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());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references'
payload = {
    "attribute_id": "b5e95ec8-80bc-4a55-a996-dcea663e4e6c",
    "from_item_id": "341a89c9-618e-40ba-92e1-1e12c83b69a6",
    "to_item_id": "033709ef-aa01-4eb8-b4d0-5733e283c160"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": "a03c02a4-cae8-4856-bc91-aea553dc24bf",
    "object": "reference",
    "attribute_id": "b5e95ec8-80bc-4a55-a996-dcea663e4e6c",
    "from_item_id": "341a89c9-618e-40ba-92e1-1e12c83b69a6",
    "to_item_id": "033709ef-aa01-4eb8-b4d0-5733e283c160"
}
 

Request   

POST api/v2/workspaces/{workspace}/boards/{board}/references

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

attribute_id   string   

Example: b5e95ec8-80bc-4a55-a996-dcea663e4e6c

from_item_id   string   

Example: 341a89c9-618e-40ba-92e1-1e12c83b69a6

to_item_id   string   

Example: 033709ef-aa01-4eb8-b4d0-5733e283c160

Delete reference

requires authentication

Delete a reference between two items.

Example request:
curl --request DELETE \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references/11c3d575-8309-4cef-95d3-17f18adea1b3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references/11c3d575-8309-4cef-95d3-17f18adea1b3"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/references/11c3d575-8309-4cef-95d3-17f18adea1b3'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "11c3d575-8309-4cef-95d3-17f18adea1b3",
    "object": "reference",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/references/{reference}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

reference   string  optional  

id of the reference. Example: 11c3d575-8309-4cef-95d3-17f18adea1b3

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Hooks

This type of webhooks are for programmatic usage, for example integrations. The webhook request contain two properties: event, which contains the name of the event (value.updated, comment.created, ...) and payload with entity data that is a subject of the event (check the code on the right side for example).


// Example payload
{
  "event": "value.created",
  "payload": {
    "id": "5455db29-d1a0-437e-8461-700d46ebadf7",
    "object": "value",
    "data": "Test",
    "attribute_id": "a4b26453-156c-432f-8e13-bc6908cdc2de",
    "deleted": false
  }
}

Pay attention to the choice of the events that you want to react to because Infinity doesn't have a concept of "item created with all needed values filled". An item is created once and then additional values are created after that.

There are two ways to resolve this:

  1. If you need multiple attributes present on the item: listen for value.created event and, when it's triggered, fetch the item from the items endpoint and validate that all required attributes are present.

  2. If you need a single specific attribute to be present: listen for value.created event. This event is triggered the first time a value is added to the item. In the event handler check if the attribute_id of the created value matches the attribute that the user is interested in. Check the example on the right side.


function valueCreatedHandler(event) {
  if (event.payload.attribute_id === '<id_of_label_attribute>') {
    // Trigger
  }
}

Hooks are deactivated automatically after they fail to receive a response from the server after 3 attempts. The second attempt is triggered 1 minute after the first, and the next is 10 minutes after that.

Create hook

requires authentication

Creates a new hook.

Example request:
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" \
    --data "{
    \"url\": \"https:\\/\\/example.com\\/webhook\\/comment-created\",
    \"events\": [
        {
            \"event\": \"comment.created\"
        }
    ]
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "https:\/\/example.com\/webhook\/comment-created",
    "events": [
        {
            "event": "comment.created"
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
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'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "id": "fabff69a-3c48-4229-b9bc-1cc3a1191fcf",
    "object": "hook",
    "url": "https://example.com/webhook/comment-created",
    "user_id": 1302,
    "board_id": "LA1dW8i1TTK",
    "secret": "kYyN4tXjqV9Ci8u3iOf779q4QJRHMGJK",
    "events": [
        {
            "event": "comment.created",
            "data": null
        }
    ],
    "created_at": "2024-01-05T10:54:24.000000Z",
    "deleted": false
}
 

Request   

POST api/v2/workspaces/{workspace}/boards/{board}/hooks

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Body Parameters

url   string   

Must be a valid URL. Example: https://example.com/webhook/comment-created

events   string[]   
event   string   

Must be one of item.created, item.updated, value.created, value.updated, comment.created, comment.updated, or item.finalized. Example: comment.created

Update hook

requires authentication

Updates a hook.

Example request:
curl --request PUT \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks/2555617b-01e2-4501-8ad8-2ae8e49766bf" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"url\": \"https:\\/\\/example.com\\/webhook\\/comment-created\",
    \"events\": [
        {
            \"event\": \"comment.created\"
        }
    ]
}"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks/2555617b-01e2-4501-8ad8-2ae8e49766bf"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "https:\/\/example.com\/webhook\/comment-created",
    "events": [
        {
            "event": "comment.created"
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks/2555617b-01e2-4501-8ad8-2ae8e49766bf'
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'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "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
}
 

Request   

PUT api/v2/workspaces/{workspace}/boards/{board}/hooks/{hook}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

hook   string   

Hook ID Example: 2555617b-01e2-4501-8ad8-2ae8e49766bf

Body Parameters

url   string   

Must be a valid URL. Example: https://example.com/webhook/comment-created

events   string[]   
event   string   

Must be one of item.created, item.updated, value.created, value.updated, comment.created, comment.updated, or item.finalized. Example: comment.created

List hooks

requires authentication

Lists the hooks of the currently logged in user.

Example request:
curl --request GET \
    --get "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks?expand[]=logs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks"
);

const params = {
    "expand[0]": "logs",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
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'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "has_more": false,
    "before": "MjU1NTYxN2ItMDFlMi00NTAxLThhZDgtMmFlOGU0OTc2NmJm",
    "after": "NTY4NDBkMDUtMjJmMS00MmNiLTkyODgtYTZlZTAwNjc2MWY4",
    "data": [
        {
            "id": "2555617b-01e2-4501-8ad8-2ae8e49766bf",
            "object": "hook",
            "url": "http://domain.com/callback",
            "user_id": 1302,
            "board_id": "LA1dW8i1TTK",
            "secret": "D5DR6g203U6zB3X5nylgIGt45ZdbO1nO",
            "logs": [],
            "events": [],
            "created_at": "2021-05-14T14:34:47.000000Z",
            "deleted": false
        },
        {
            "id": "56840d05-22f1-42cb-9288-a6ee006761f8",
            "object": "hook",
            "url": "http://domain.com/callback",
            "user_id": 1302,
            "board_id": "LA1dW8i1TTK",
            "secret": "XTTuLIBt70e4oSnNBzd1wx7QTJCXqEDD",
            "logs": [],
            "events": [],
            "created_at": "2021-05-14T14:32:00.000000Z",
            "deleted": false
        }
    ]
}
 

Request   

GET api/v2/workspaces/{workspace}/boards/{board}/hooks

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

Query Parameters

expand   string[]  optional  

set to 'logs' to include hook logs in the response.

Delete hook

requires authentication

Deletes a hook that belongs to the currently logged in user.

Example request:
curl --request DELETE \
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks/2555617b-01e2-4501-8ad8-2ae8e49766bf" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks/2555617b-01e2-4501-8ad8-2ae8e49766bf"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://app.startinfinity.com/api/v2/workspaces/669/boards/LA1dW8i1TTK/hooks/2555617b-01e2-4501-8ad8-2ae8e49766bf'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (200):


{
    "id": "2555617b-01e2-4501-8ad8-2ae8e49766bf",
    "object": "hook",
    "deleted": true
}
 

Request   

DELETE api/v2/workspaces/{workspace}/boards/{board}/hooks/{hook}

Headers

Authorization      

Example: Bearer {YOUR_AUTH_KEY}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

workspace   string   

Workspace ID Example: 669

board   string   

Board ID Example: LA1dW8i1TTK

hook   string   

Hook ID Example: 2555617b-01e2-4501-8ad8-2ae8e49766bf