Teamwork.com API

Welcome to the Teamwork.com API, your gateway to seamless integration with our platform.

Our API provides access to a wide range of resources and functionalities, empowering developers to build innovative applications and unlock new possibilities.

Teamwork.com API V1 is our legacy API which has evolved over time but unfortunately has some inconsistent patterns.

In parallel to V1, we developed Teamwork.com API V2 primarily to power our new web app, at the time codenamed TKO. It also supported an improved caching system under the hood and a clearer approach to parameter naming. We use V2 heavily internally for our own inter-product integrations.

Teamwork.com API V3 is a fresh approach from the ground up to implement a standards-first, cross-product API specification that will ensure consistent input&output formats across all of our products.

It provides support for sparse fields, sideloading of related entities, standardised input&output parameters and much more.

We highly recommend using V3 compliant endpoints where possible and we'll be doing our best to convert all our API infrastructure to V3 over the year ahead.

We will maintain support for our older format endpoints where possible and provided a long lead in time where any are to be deprecated.

Once your authenticated your all set! You can send GET/POST/PUT/DELETE requests to the API now. The first code sample on the right, will allow you to return a list of projects and the second one focuses on creating a task

Feedback

If you have any feedback or suggestions, feel free to contact us at api@teamwork.com

Get all projects request

GET
/projects/api/v3/projects.json
import http.client

conn = http.client.HTTPSConnection("{yourSiteName}")
payload = ''
headers = {
  'access-control-expose-headers': 'id,x-page',
  'Authorization': 'Basic '+base64.b64encoded('userName:password')
}
conn.request("GET", "/projects/api/v3/projects.json", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Create a task

POST
/projects/api/v3/tasklists/{taskListId}/tasks.json
import http.client
import json

conn = http.client.HTTPSConnection("{yourSiteName}.teamwork.com")
payload = json.dumps({
  "task": {
    "tasklistId": 2859633,
    "name": "Creating a task from the Teamwork.com API",
    "assignees": {
      "userIds": [
        360960
      ]
    },
    "startAt": "2024-03-16",
    "dueAt": "2024-03-24",
    "description": "[Create a task endpoint](https://teamwork-docs.vercel.app/docs/teamwork/v3/tasks/post-projects-api-v3-tasklists-tasklist-id-tasks-json)"
  }
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Basic '+base64.b64encoded('userName:password')
}
conn.request("POST", "/projects/api/v3/tasklists/{taskListId}/tasks.json", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))