Most of the data structures in the Basecamp 4 API are represented as "Recordings", with generic actions available to be performed.
Endpoints:
GET /projects/recordings.jsonwill return a paginated list of records for the giventypeof recording.
Required parameters: type, which must be Comment, Document, Kanban::Card, Kanban::Step, Message, Question::Answer, Schedule::Entry, Todo, Todolist, Upload, or Vault.
Optional query parameters:
bucket- Single or comma separated list of project IDs. Default: All active projects visible to the current user.status- Options:active,archived, ortrashed. Default:activesort- Options:created_atorupdated_at. Default:created_at.direction- Options:descorasc. Default:desc.
Examples: /projects/recordings.json?type=Todo, /projects/recordings.json?type=Message&bucket=1, /projects/recordings.json?type=Document&bucket=1,2&sort=updated_at&direction=asc
PUT /recordings/2/status/trashed.jsonwill mark the recording with an ID of2as trashed.
No parameters required. Returns 204 No Content if successful.
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -X PUT \
https://3.basecampapi.com/$ACCOUNT_ID/recordings/2/status/trashed.jsonPUT /recordings/2/status/archived.jsonwill mark the recording with an ID of2as archived.
No parameters required. Returns 204 No Content if successful.
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -X PUT \
https://3.basecampapi.com/$ACCOUNT_ID/recordings/2/status/archived.jsonPUT /recordings/2/status/active.jsonwill mark the recording with an ID of2as active.
No parameters required. Returns 204 No Content if successful.
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -X PUT \
https://3.basecampapi.com/$ACCOUNT_ID/recordings/2/status/active.jsonThe following project-scoped routes are still supported and will remain available, but flat routes above are the canonical form for new integrations.
PUT /buckets/1/recordings/2/status/trashed.json→ Trash a recordingPUT /buckets/1/recordings/2/status/archived.json→ Archive a recordingPUT /buckets/1/recordings/2/status/active.json→ Unarchive a recording