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.
Only board owners can generate API keys.
Open your board and go to Board Settings → Services.
Under API Key, click the Generate API Key button.

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

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

Use the following endpoint to get tasks:
GET https://t0ggles.com/api/v1/tasks
{"Content-Type": "application/json","Authorization": "Bearer YOUR_API_KEY"}
All query parameters are optional and can be combined to filter tasks.
| Parameter | Description |
|---|---|
projectKey | Filter by project key(s). Use comma-separated values for multiple projects (e.g., SWIPER,MARKETING,OTHER) |
status | Filter by status name(s). Use comma-separated values for multiple statuses (e.g., To Do,In Progress) |
descriptionType | Format for task description in response. One of: text, markdown, html. Default: text |
assignedUserEmail | Filter by assigned user email(s). Use comma-separated values for multiple users (e.g., user1@email.com,user2@email.com) |
priority | Filter by priority. One of: low, medium, high |
pinToTop | Filter pinned tasks. One of: true, false |
tag | Filter by tag name(s). Use comma-separated values for multiple tags (e.g., Urgent,Bug) |
startDate | Filter by start date. Single date (2025-03-15) or date range (2025-03-15,2025-03-20) |
dueDate | Filter by due date. Single date (2025-03-25) or date range (2025-03-15,2025-03-25) |
You can filter by custom properties using the prop_ prefix followed by the property name:
| Parameter | Type | Description |
|---|---|---|
prop_<PropertyName> | string | Filter by custom property value. Use comma-separated values for multiple options (e.g., prop_Region=North America,Europe) |
Property Type Support:
startDate/dueDate)true or false)true or false)The response includes an array of tasks matching the filter criteria (limited to 100 tasks):
| Field | Type | Description |
|---|---|---|
success | boolean | Indicates success |
tasks | array | Array of task objects matching filter criteria |
error | boolean | Indicates error (if any) |
message | string | Error message (if error is true) |
| Field | Type | Description |
|---|---|---|
id | string | Task ID |
parentId | string | Parent task ID (empty if no parent) |
projectKey | string | Project key (e.g., MARKETING) |
key | number | Task key (e.g., 123) |
title | string | Task title |
description | string | Task description (formatted based on descriptionType) |
coverImageUrl | string | Cover image URL (empty if no image) |
assignedUserEmail | string | Assigned user email (empty if unassigned) |
startDate | string | Start date |
dueDate | string | Due date |
status | string | Status name |
tags | string[] | Array of tag names |
pinToTop | boolean | Whether task is pinned to top |
priority | string | Priority (low, medium, high, or empty) |
createdAt | string | Creation timestamp |
createdBy | string | Creator email |
updatedAt | string | Last update timestamp |
updatedBy | string | Last updater email |
startedAt | string | When task was started |
startedBy | string | Who started the task |
endedAt | string | When task was completed |
endedBy | string | Who completed the task |
properties | object | Custom properties as key-value pairs |
// Fetch tasks from MARKETING project with high priorityconst 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 propertiesconst 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);
Use the following endpoint to create tasks:
POST https://t0ggles.com/api/v1/tasks
{"Content-Type": "application/json","Authorization": "Bearer YOUR_API_KEY"}
The tasks parameter is an array of task objects. Each object supports the following fields:
| Field | Type | Description |
|---|---|---|
title | string | Task title |
projectKey | string | Project key (e.g. SWIPER, OTHER) |
descriptionType | string | One of: markdown, html, text |
descriptionContent | string | Task description |
| Field | Type | Description |
|---|---|---|
assignedUserEmail | string | Email of the board member |
priority | string | One of: low, medium, high |
pinToTop | boolean | Whether to pin the task to the top |
tags | array | Array of tag names |
startDate, dueDate | date | JS Date object or ISO date string |
properties | object | Map of property names to values |
| Field | Type | Description |
|---|---|---|
success | boolean | Indicates success |
error | boolean | Indicates error (if any) |
message | string | Error message (if error is true) |
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 TimelineTasks to complete before product launch:- Finalize creatives and copy- Schedule posts on all platforms- Coordinate with influencers**Deadline:** March 20Contact: [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!