Skip to content

Using Teamwork

Practical guide for working with Teamwork projects, tasks, milestones, and time tracking through Fp Switchboard.

  • All IDs are numeric integers. Endpoint uses “people” not “users”
  • V1 dates: YYYYMMDD. V3 dates: ISO 8601. V1 keys: hyphenated. V3: camelCase
  • Tasks require a tasklist: POST /tasklists/{id}/tasks.json
  • Custom fields: Create in V3, attach in V1, retrieve in V2
  • Rate limit: 150/min (Grow), 300/min (Scale). Check X-Rate-Limit-Remaining

Endpoint paths use “people” but task assignments use userIds.

Example
WrongGET /projects/api/v3/users.json
CorrectGET /projects/api/v3/people.json (but assignees.userIds in task body)

Date Formats Vary by Version Critical

Section titled “Date Formats Vary by Version ”

V1 uses YYYYMMDD, V3 uses ISO 8601. Key names also differ.

VersionExample
V1start-date: "20250115"
V3startAt: "2025-01-15"

Tasks Need Tasklist Critical

Section titled “Tasks Need Tasklist ”

Cannot create orphan tasks. Must specify tasklist in URL.

Example
WrongPOST /projects/api/v3/tasks.json
CorrectPOST /projects/api/v3/tasklists/{tasklistId}/tasks.json

Custom Fields Multi-Version Important

Section titled “Custom Fields Multi-Version ”

Custom fields require using multiple API versions together:

  • Create in V3
  • Attach in V1
  • Retrieve in V2 with includeCustomFields=true

V1 vs V3 Key Names Important

Section titled “V1 vs V3 Key Names ”
V1V3
todo-itemtask
start-datestartAt
due-datedueAt
Hyphenated keyscamelCase keys
  1. Get or create project
  2. Get or create tasklist in project
  3. POST /projects/api/v3/tasklists/{tasklistId}/tasks.json
  4. Use camelCase keys (name, startAt, dueAt)
  1. GET /projects/api/v1/pendingfiles/presignedurl.json
  2. Upload to S3 URL with exact Content-Length
  3. Attach using ref ID: pendingFileAttachments: ["tf_..."]
ID TypeFormatExample
Project/Task/Person IDNumeric integer12345
  • “List my Teamwork projects”
  • “Show tasks assigned to me this week”
  • “Create a task in the Development tasklist”
  • “Log 2 hours on task 12345”
  • “List milestones for the Q1 project”
PlanLimit
Grow150 requests/minute
Scale300 requests/minute
HeaderCheck X-Rate-Limit-Remaining