API

You can programmatically fetch and create tasks on a t0ggles board using the API. This feature is available exclusively to board owners and requires an API key that can be generated in the board settings.

#Generate API Key

Only board owners can generate API keys.

  1. Open your board and go to Board SettingsServices.

  2. Under API Key, click the Generate API Key button.

    Generate API Key

  3. Copy the generated key and store it somewhere safe - this is the only time you will see the full token.

    Generate API Key

  4. On future visits, only a masked portion of the key will be visible.

    Generate API Key


#Get Tasks

Use the following endpoint to get tasks:

GET https://t0ggles.com/api/v1/tasks

#Headers

{
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}

#Query Parameters

All query parameters are optional and can be combined to filter tasks.

#Basic Parameters

ParameterDescription
projectKeyFilter by project key(s). Use comma-separated values for multiple projects (e.g., SWIPER,MARKETING,OTHER)
statusFilter by status name(s). Use comma-separated values for multiple statuses (e.g., To Do,In Progress)
descriptionTypeFormat for task description in response. One of: text, markdown, html. Default: text
assignedUserEmailFilter by assigned user email(s). Use comma-separated values for multiple users (e.g., user1@email.com,user2@email.com)
priorityFilter by priority. One of: low, medium, high
pinToTopFilter pinned tasks. One of: true, false
tagFilter by tag name(s). Use comma-separated values for multiple tags (e.g., Urgent,Bug)
startDateFilter by start date. Single date (2025-03-15) or date range (2025-03-15,2025-03-20)
dueDateFilter by due date. Single date (2025-03-25) or date range (2025-03-15,2025-03-25)

#Custom Properties

You can filter by custom properties using the prop_ prefix followed by the property name:

ParameterTypeDescription
prop_<PropertyName>stringFilter by custom property value. Use comma-separated values for multiple options (e.g., prop_Region=North America,Europe)

Property Type Support:

  • Text: Exact match (comma-separated for multiple values)
  • Number: Numeric match (comma-separated for multiple values)
  • Date: Single date or date range (same format as startDate/dueDate)
  • Email: Exact match (comma-separated for multiple values)
  • URL: Exact match (comma-separated for multiple values)
  • Checkbox: Boolean value (true or false)
  • Toggle: Boolean value (true or false)
  • Select: Option value match (comma-separated for multiple values)
  • Multi-Select: Matches if task has any of the specified values
  • Person: Email match (comma-separated for multiple emails)

#Response

The response includes an array of tasks matching the filter criteria (limited to 100 tasks):

FieldTypeDescription
successbooleanIndicates success
tasksarrayArray of task objects matching filter criteria
errorbooleanIndicates error (if any)
messagestringError message (if error is true)

#Task Object

FieldTypeDescription
idstringTask ID
parentIdstringParent task ID (empty if no parent)
projectKeystringProject key (e.g., MARKETING)
keynumberTask key (e.g., 123)
titlestringTask title
descriptionstringTask description (formatted based on descriptionType)
coverImageUrlstringCover image URL (empty if no image)
assignedUserEmailstringAssigned user email (empty if unassigned)
startDatestringStart date
dueDatestringDue date
statusstringStatus name
tagsstring[]Array of tag names
pinToTopbooleanWhether task is pinned to top
prioritystringPriority (low, medium, high, or empty)
createdAtstringCreation timestamp
createdBystringCreator email
updatedAtstringLast update timestamp
updatedBystringLast updater email
startedAtstringWhen task was started
startedBystringWho started the task
endedAtstringWhen task was completed
endedBystringWho completed the task
propertiesobjectCustom properties as key-value pairs

#Example

// Fetch tasks from MARKETING project with high priority
const res = await fetch(
'https://t0ggles.com/api/v1/tasks?projectKey=MARKETING&priority=high&descriptionType=markdown',
{
method: 'GET',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer YOUR_API_KEY',
},
}
);
const data = await res.json();
console.log(data);
/*
{
success: true,
tasks: [
{
id: "task123",
parentId: "",
projectKey: "MARKETING",
key: 45,
title: "Launch Campaign Planning",
description: "## Campaign Details\n\nPlan and execute...",
coverImageUrl: "",
assignedUserEmail: "julia@company.com",
startDate: "2025-03-15T18:00:00.00Z",
dueDate: "2025-03-25T18:00:00.00Z",
status: "In Progress",
tags: ["Urgent", "Campaign"],
pinToTop: true,
priority: "high",
createdAt: "2025-03-10T10:00:00Z",
createdBy: "owner@company.com",
updatedAt: "2025-03-12T15:30:00Z",
updatedBy: "julia@company.com",
startedAt: "2025-03-11T09:00:00Z",
startedBy: "julia@company.com",
endedAt: "",
endedBy: "",
properties: {
"Campaign Type": "Product Launch",
"Estimated Budget": 8000,
"Region": "North America"
}
}
]
}
*/
// Fetch tasks with multiple filters including custom properties
const res = await fetch(
'https://t0ggles.com/api/v1/tasks?' +
'projectKey=SWIPER,MARKETING&' +
'status=In Progress,Review&' +
'assignedUserEmail=julia@company.com&' +
'tag=Urgent&' +
'dueDate=2025-03-15,2025-03-31&' +
'prop_Region=North America&' +
'descriptionType=html',
{
method: 'GET',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer YOUR_API_KEY',
},
}
);
const data = await res.json();
console.log(data.tasks);

#Add Tasks

Use the following endpoint to create tasks:

POST https://t0ggles.com/api/v1/tasks

#Headers

{
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}

#Payload

The tasks parameter is an array of task objects. Each object supports the following fields:

#Required fields

FieldTypeDescription
titlestringTask title
projectKeystringProject key (e.g. SWIPER, OTHER)
descriptionTypestringOne of: markdown, html, text
descriptionContentstringTask description

#Optional fields

FieldTypeDescription
assignedUserEmailstringEmail of the board member
prioritystringOne of: low, medium, high
pinToTopbooleanWhether to pin the task to the top
tagsarrayArray of tag names
startDate, dueDatedateJS Date object or ISO date string
propertiesobjectMap of property names to values

#Response

FieldTypeDescription
successbooleanIndicates success
errorbooleanIndicates error (if any)
messagestringError message (if error is true)

#Example

const res = await fetch('https://t0ggles.com/api/v1/tasks', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer YOUR_API_KEY',
},
body: JSON.stringify({
tasks: [
{
title: 'Launch Campaign Planning',
projectKey: 'MARKETING',
assignedUserEmail: 'julia@company.com',
priority: 'high',
pinToTop: true,
tags: ['Urgent', 'Campaign'],
startDate: new Date(2025, 3, 15),
dueDate: new Date(2025, 3, 25),
descriptionType: 'markdown',
descriptionContent: `
## Launch Campaign Timeline
Tasks to complete before product launch:
- Finalize creatives and copy
- Schedule posts on all platforms
- Coordinate with influencers
**Deadline:** March 20
Contact: [Julia](mailto:julia@company.com)
`,
properties: {
// text type property
'Campaign Type': 'Product Launch',
// number type property
'Estimated Budget': 8000,
// checkbox type property
'Assets Ready': false,
// toggle type property
'Approval Needed': true,
// date type property
'Kickoff Date': new Date(2025, 3, 15),
// url type property
'Landing Page URL': 'https://company.com/launch',
// email type property
'Marketing Lead': 'julia@company.com',
// person type property
'Stakeholder': 'pm@company.com',
// select type property
'Region': 'North America',
// multi-select type property
'Channels': ['Instagram', 'LinkedIn'],
},
},
],
}),
});
// { success: true } or { error: true, message: 'error message' }
console.log(await res.json());

✅ Now your app or script can create tasks in t0ggles dynamically!