---
title: "Introduction — GanttFather API"
description: "Create a task through the GanttFather REST API in under five minutes."
canonical: "https://ganttfather.com/docs/api/introduction/"
locale: "en"
category: "product"
---

# Introduction — GanttFather API

API reference [AI assistants (MCP)](https://ganttfather.com/docs/ai-agent/)

## Getting started

- [Introduction](https://ganttfather.com/docs/api/introduction/)
- [Authentication](https://ganttfather.com/docs/api/authentication/)
- [Pagination](https://ganttfather.com/docs/api/pagination/)
- [Rate limits & quotas](https://ganttfather.com/docs/api/rate-limits/)
- [Errors](https://ganttfather.com/docs/api/errors/)

## Projects

- [GET List projects](https://ganttfather.com/docs/api/list-projects/)
- [GET Get project](https://ganttfather.com/docs/api/get-project/)

## Tasks

- [GET List tasks](https://ganttfather.com/docs/api/list-tasks/)
- [GET Get task](https://ganttfather.com/docs/api/get-task/)
- [POST Create task](https://ganttfather.com/docs/api/create-task/)
- [PATCH Update task](https://ganttfather.com/docs/api/update-task/)
- [DELETE Delete task](https://ganttfather.com/docs/api/delete-task/)
- [POST Reorder tasks](https://ganttfather.com/docs/api/reorder-tasks/)
- [PUT Set assignees](https://ganttfather.com/docs/api/set-assignees/)

## Dependencies

- [GET List dependencies](https://ganttfather.com/docs/api/list-dependencies/)
- [PUT Set dependencies](https://ganttfather.com/docs/api/set-dependencies/)
- [POST Add dependency](https://ganttfather.com/docs/api/add-dependency/)
- [DELETE Remove dependency](https://ganttfather.com/docs/api/remove-dependency/)

## Resources

- [GET List resources](https://ganttfather.com/docs/api/list-resources/)
- [POST Create resource](https://ganttfather.com/docs/api/create-resource/)
- [PATCH Update resource](https://ganttfather.com/docs/api/update-resource/)
- [DELETE Delete resource](https://ganttfather.com/docs/api/delete-resource/)

## Members

- [GET List members](https://ganttfather.com/docs/api/list-members/)

 Getting started / **Introduction**

# Introduction

 Updated Jul 4, 2026

 The GanttFather API is a REST interface to your projects at:

 https://api.ganttfather.com/v1
 Authenticate with a token and read or write your tasks, dependencies, and resources over HTTPS. Anything you can do to a project in the app, you can do from a script or integration with plain curl .

 Connecting an AI assistant (Claude, ChatGPT, Cursor) instead of writing REST calls yourself? See the MCP server guide — same token, a higher-level tool interface.

## 1. Create a token

 In the GanttFather app open **Settings → AI Agents & API** and create a token. Two scopes exist:

- **Project tokens** are pinned to the projects you grant them — good for single-integration automations.

- **Account tokens** act as you, on any project you can access — good for personal scripts.

 Copy the glt_… value once — only its hash is stored.

 The same token also works with the AI-agent integration, if you use it — one credential, two surfaces. You don’t need to know anything about that to use the API.

## 2. List your projects

 curl https://api.ganttfather.com/v1/projects \
 -H "Authorization: Bearer glt_YOUR_TOKEN"
 [
 { "id" : "0197…" , "name" : "Website relaunch" , "active" : true , "readOnlyReason" : null }
 ]

## 3. Create a task

 curl -X POST https://api.ganttfather.com/v1/projects/{projectId}/tasks \
 -H "Authorization: Bearer glt_YOUR_TOKEN" \
 -H "Content-Type: application/json" \
 -H "Idempotency-Key: create-task-001" \
 -d '{
 "name": "Draft launch checklist",
 "startDate": "2026-07-07",
 "endDate": "2026-07-10",
 "status": "InProgress"
 }'
 The response is 201 Created with the task body. Two things happened server-side worth knowing:

- The task was **assigned to your token’s integration identity** — each token gets its own member row on the project roster, so work created over the API is clearly attributed to the integration rather than to a person. Pass assigneeIds to assign people instead.

- Your team saw it **appear live** — API writes broadcast over the same realtime channel the app uses, so open boards update without a refresh.

## 4. Update it — status and progress stay in sync

 curl -X PATCH https://api.ganttfather.com/v1/tasks/{taskId} \
 -H "Authorization: Bearer glt_YOUR_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{ "status": "Done" }'
 Setting a status derives the matching progress server-side (Done → 100); setting progress derives the status. Send both to control them explicitly.

## Next

- [Authentication →](https://ganttfather.com/docs/api/authentication/) scopes, permissions, and how denials behave

- [Pagination →](https://ganttfather.com/docs/api/pagination/) how large task lists page

- [Tasks →](https://ganttfather.com/docs/api/list-tasks/) the full endpoint set, starting with list tasks
