Create a project with tasks
This page documents the legacy API v0. New integrations should use API v1.
PROJECT_RESPONSE=$(curl https://api.teamgrid.app/projects \ -X POST \ -H "Authorization: Bearer $TEAMGRID_API_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "name": "Website relaunch", "description": "Implementation project for the new website.", "plannedStart": "2026-07-01T09:00:00Z", "plannedEnd": "2026-07-31T17:00:00Z" }')
PROJECT_ID=$(printf '%s' "$PROJECT_RESPONSE" | jq -r '.data._id')echo "Created project $PROJECT_ID"
curl https://api.teamgrid.app/tasks \ -X POST \ -H "Authorization: Bearer $TEAMGRID_API_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d "{ \"name\": \"Prepare launch checklist\", \"projectId\": \"$PROJECT_ID\", \"plannedTime\": 120 }"
curl https://api.teamgrid.app/tasks \ -X POST \ -H "Authorization: Bearer $TEAMGRID_API_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d "{ \"name\": \"QA launch flow\", \"projectId\": \"$PROJECT_ID\", \"plannedTime\": 90 }"Use the returned ids as the durable link between your system and TeamGrid. Avoid retrying POST requests blindly after a timeout unless your integration can detect duplicates.Create the project
Section titled “Create the project”Send the project name and optional planning fields to POST /projects. TeamGrid assigns the team from the API token, so do not send teamId.
Store the project id
Section titled “Store the project id”Persist the returned project _id in your own system. Use that id when creating tasks and when reconciling later updates.
Create tasks for the project
Section titled “Create tasks for the project”Create each task with the returned project id. Keep the returned task ids so future updates target the existing tasks instead of creating duplicates.