Get the tasks of a project

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://api-docs.kitsu.cloud/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "Kitsu API MCP server": {
    "url": "https://api-docs.kitsu.cloud/mcp"
  }
}

Close
GET /data/projects/{project_id}/tasks

Get the tasks of a project, page by page. Synchronization tools use this route. A vendor gets only the tasks assigned to them. A client gets reduced tasks.

Path parameters

  • project_id string(uuid) Required

    Unique identifier of the project

Query parameters

  • page integer

    Page to get

  • limit integer

    Number of rows in a page, or in a request of a cursor walk

  • cursor_id string(uuid)

    Without page, id of the last row of the previous request. With limit, it walks the whole list from the newest created row to the oldest, request after request, until one returns fewer rows than limit

  • task_type_id string(uuid)

    Get only the tasks of this task type

  • episode_id string(uuid)

    Get only the tasks of this episode

Responses

  • 200 application/json

    Without page, the list of tasks. With page, an object with data, total, nb_pages, limit, offset and page.

    Hide response attributes Show response attributes object
    • data array[object]
      Hide data attributes Show data attributes object
      • id string(uuid)
      • name string
      • task_type_id string(uuid)
      • task_status_id string(uuid)
      • entity_id string(uuid)
      • project_id string(uuid)
      • assignees array[string(uuid)]
    • limit integer
    • page integer
    • total integer
    • nb_pages integer
    • offset integer
  • 304

    Not modified. The response carries an ETag. Send it in If-None-Match to get a 304 when nothing changed.

  • 403

    You do not have access to this project

  • 404

    The project does not exist

GET /data/projects/{project_id}/tasks
curl -X GET "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/tasks?page=1&task_type_id=a24a6ea4-ce75-4665-a070-57453082c25&episode_id=a24a6ea4-ce75-4665-a070-57453082c25" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
import requests

url = "http://api.example.com/data/projects/a24a6ea4-ce75-4665-a070-57453082c25/tasks"
headers = {
    "Authorization": "Bearer YOUR_API_TOKEN",
    "Accept": "application/json"
}
params = {
    "page": 1,
    "task_type_id": "a24a6ea4-ce75-4665-a070-57453082c25",
    "episode_id": "a24a6ea4-ce75-4665-a070-57453082c25"
}
payload = None

response = requests.get(
    url,
    headers=headers,
    params=params,
    json=payload
)

response.raise_for_status()

if response.content:
    print(response.json())
Response examples (200)
{
  "data": [
    {
      "id": "a24a6ea4-ce75-4665-a070-57453082c250",
      "name": "SH010 Animation",
      "task_type_id": "b24a6ea4-ce75-4665-a070-57453082c250",
      "task_status_id": "c24a6ea4-ce75-4665-a070-57453082c250",
      "entity_id": "d24a6ea4-ce75-4665-a070-57453082c250",
      "project_id": "e24a6ea4-ce75-4665-a070-57453082c250",
      "assignees": [
        "f24a6ea4-ce75-4665-a070-57453082c250"
      ]
    }
  ],
  "limit": 100,
  "page": 1,
  "total": 42,
  "nb_pages": 42,
  "offset": 42
}