All integrations

Basecamp

PROJECT MANAGEMENT · TASKS

To-do lists, message boards, and docs in the projects that person is on.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

basecamp_delete_by_accountid_account_logo_jsonWRITE

Remove the account logo. via DELETE /{accountId}/account/logo.json

api
basecamp_delete_by_accountid_boosts_by_boostidWRITE

Delete a boost via DELETE /{accountId}/boosts/{boostId}

api
basecamp_delete_by_accountid_buckets_by_bucketid_card_tables_columns_by_columnid_on_hold_jsonWRITE

Disable on-hold section in a column via DELETE /{accountId}/buckets/{bucketId}/card_tables/columns/{columnId}/on_hold.json

api
basecamp_delete_by_accountid_buckets_by_bucketid_card_tables_wormholes_by_wormholeidWRITE

Delete a wormhole via DELETE /{accountId}/buckets/{bucketId}/card_tables/wormholes/{wormholeId}

api
basecamp_delete_by_accountid_buckets_by_bucketid_categories_by_typeidWRITE

Delete a message type via DELETE /{accountId}/buckets/{bucketId}/categories/{typeId}

api
basecamp_delete_by_accountid_buckets_by_bucketid_chats_by_campfireid_integrations_by_chatbotidWRITE

Delete a chatbot via DELETE /{accountId}/buckets/{bucketId}/chats/{campfireId}/integrations/{chatbotId}

api
basecamp_delete_by_accountid_card_tables_lists_by_columnid_subscription_jsonWRITE

Unsubscribe from a card column (stop watching for changes) via DELETE /{accountId}/card_tables/lists/{columnId}/subscription.json

api
basecamp_delete_by_accountid_chats_by_campfireid_lines_by_lineidWRITE

Delete a campfire line; allowed for the line's creator or an admin. via DELETE /{accountId}/chats/{campfireId}/lines/{lineId}

api
basecamp_delete_by_accountid_dock_tools_by_toolidWRITE

Delete a tool (trash it) via DELETE /{accountId}/dock/tools/{toolId}

api
basecamp_delete_by_accountid_gauge_needles_by_needleidWRITE

Destroy a gauge needle via DELETE /{accountId}/gauge_needles/{needleId}

api
basecamp_delete_by_accountid_lineup_markers_by_markeridWRITE

Delete a lineup marker via DELETE /{accountId}/lineup/markers/{markerId}

api
basecamp_delete_by_accountid_my_priorities_by_recordingidWRITE

Remove a recording from Up Next (returns 204 No Content). via DELETE /{accountId}/my/priorities/{recordingId}

api
basecamp_delete_by_accountid_people_by_personid_out_of_office_jsonWRITE

Disable out of office for a person. via DELETE /{accountId}/people/{personId}/out_of_office.json

api
basecamp_delete_by_accountid_projects_by_projectidWRITE

Trash a project (returns 204 No Content) via DELETE /{accountId}/projects/{projectId}

api
basecamp_delete_by_accountid_questions_by_questionid_pause_jsonWRITE

Resume a paused check-in question (resumes sending reminders) via DELETE /{accountId}/questions/{questionId}/pause.json

api
basecamp_delete_by_accountid_recordings_by_messageid_pin_jsonWRITE

Unpin a message from the message board via DELETE /{accountId}/recordings/{messageId}/pin.json

api
basecamp_delete_by_accountid_recordings_by_recordingid_bookmark_jsonWRITE

Remove the current user's bookmark from a recording (returns 204 No Content). via DELETE /{accountId}/recordings/{recordingId}/bookmark.json

api
basecamp_delete_by_accountid_recordings_by_recordingid_spotlight_jsonWRITE

Remove a recording from the spotlight area. via DELETE /{accountId}/recordings/{recordingId}/spotlight.json

api
basecamp_delete_by_accountid_recordings_by_recordingid_subscription_jsonWRITE

Unsubscribe the current user from a recording via DELETE /{accountId}/recordings/{recordingId}/subscription.json

api
basecamp_delete_by_accountid_recordings_by_toolid_position_jsonWRITE

Disable a tool (hide it from the project dock) via DELETE /{accountId}/recordings/{toolId}/position.json

api
basecamp_delete_by_accountid_stacks_by_folderidWRITE

Delete a folder and unpin its projects from the home screen (returns 204 No Content). via DELETE /{accountId}/stacks/{folderId}

api
basecamp_delete_by_accountid_templates_by_templateidWRITE

Delete a template (trash it) via DELETE /{accountId}/templates/{templateId}

api
basecamp_delete_by_accountid_timesheet_entries_by_entryidWRITE

Permanently delete a timesheet entry; answers 403 when the caller may not archive or trash it. via DELETE /{accountId}/timesheet_entries/{entryId}

api
basecamp_delete_by_accountid_todos_by_todoid_completion_jsonWRITE

Mark a todo as incomplete via DELETE /{accountId}/todos/{todoId}/completion.json

api
basecamp_delete_by_accountid_webhooks_by_webhookidWRITE

Delete a webhook via DELETE /{accountId}/webhooks/{webhookId}

api
basecamp_get_by_accountid_account_jsonREAD

Get the account for the current access token via GET /{accountId}/account.json

api
basecamp_get_by_accountid_boosts_by_boostidREAD

Get a single boost via GET /{accountId}/boosts/{boostId}

api
basecamp_get_by_accountid_buckets_by_bucketid_categories_by_typeidREAD

Get a single message type by id via GET /{accountId}/buckets/{bucketId}/categories/{typeId}

api
basecamp_get_by_accountid_buckets_by_bucketid_categories_jsonREAD

List message types in a project **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/buckets/{bucketId}/categories.json

api
basecamp_get_by_accountid_buckets_by_bucketid_chats_by_campfireid_integrations_by_chatbotidREAD

Get a chatbot by ID via GET /{accountId}/buckets/{bucketId}/chats/{campfireId}/integrations/{chatbotId}

api
basecamp_get_by_accountid_buckets_by_bucketid_chats_by_campfireid_integrations_jsonREAD

List all chatbots for a campfire **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/buckets/{bucketId}/chats/{campfireId}/integrations.json

api
basecamp_get_by_accountid_buckets_by_bucketid_client_approvals_jsonREAD

List all client approvals in a project **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/buckets/{bucketId}/client/approvals.json

api
basecamp_get_by_accountid_buckets_by_bucketid_client_correspondences_jsonREAD

List all client correspondences in a project **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/buckets/{bucketId}/client/correspondences.json

api
basecamp_get_by_accountid_buckets_by_bucketid_client_recordings_by_recordingid_replies_by_replyidREAD

Get a single client reply by id via GET /{accountId}/buckets/{bucketId}/client/recordings/{recordingId}/replies/{replyId}

api
basecamp_get_by_accountid_buckets_by_bucketid_client_recordings_by_recordingid_replies_jsonREAD

List all client replies for a recording (correspondence or approval) **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/buckets/{bucketId}/client/recordings/{recordingId}/replies.json

api
basecamp_get_by_accountid_buckets_by_bucketid_webhooks_jsonREAD

List all webhooks for a project **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/buckets/{bucketId}/webhooks.json

api
basecamp_get_by_accountid_calendars_by_calendaridREAD

Get a calendar by its bucket id. via GET /{accountId}/calendars/{calendarId}

api
basecamp_get_by_accountid_card_tables_by_cardtableidREAD

Get a card table by ID via GET /{accountId}/card_tables/{cardTableId}

api
basecamp_get_by_accountid_card_tables_cards_by_cardidREAD

Get a card by ID via GET /{accountId}/card_tables/cards/{cardId}

api
basecamp_get_by_accountid_card_tables_columns_by_columnidREAD

Get a card column by ID via GET /{accountId}/card_tables/columns/{columnId}

api
basecamp_get_by_accountid_card_tables_lists_by_columnid_cards_jsonREAD

List cards in a column **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/card_tables/lists/{columnId}/cards.json

api
basecamp_get_by_accountid_card_tables_steps_by_stepidREAD

Get a step by ID via GET /{accountId}/card_tables/steps/{stepId}

api
basecamp_get_by_accountid_cards_completed_jsonREAD

Completed cards across all accessible projects, grouped by project (paginated). via GET /{accountId}/cards/completed.json

api
basecamp_get_by_accountid_cards_no_due_date_jsonREAD

Open cards with no due date across all accessible projects, grouped by project (paginated). via GET /{accountId}/cards/no_due_date.json

api
basecamp_get_by_accountid_cards_not_now_jsonREAD

Cards parked in a project's "Not now" column across all accessible projects, grouped by project (paginated). via GET /{accountId}/cards/not_now.json

api
basecamp_get_by_accountid_cards_open_jsonREAD

Incomplete cards in active columns across all accessible projects, grouped by project (paginated). via GET /{accountId}/cards/open.json

api
basecamp_get_by_accountid_cards_overdue_jsonREAD

Get every overdue card across all accessible projects, oldest-due-date-first. via GET /{accountId}/cards/overdue.json

api
basecamp_get_by_accountid_cards_unassigned_jsonREAD

Open, unassigned cards across all accessible projects, grouped by project (paginated). via GET /{accountId}/cards/unassigned.json

api
basecamp_get_by_accountid_chats_by_campfireidREAD

Get a campfire by ID via GET /{accountId}/chats/{campfireId}

api
basecamp_get_by_accountid_chats_by_campfireid_lines_by_lineidREAD

Get a campfire line by ID via GET /{accountId}/chats/{campfireId}/lines/{lineId}

api
basecamp_get_by_accountid_chats_by_campfireid_lines_jsonREAD

List all lines (messages) in a campfire **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/chats/{campfireId}/lines.json

api
basecamp_get_by_accountid_chats_by_campfireid_uploads_jsonREAD

List uploaded files in a campfire **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/chats/{campfireId}/uploads.json

api
basecamp_get_by_accountid_chats_jsonREAD

List all campfires across the account **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/chats.json

api
basecamp_get_by_accountid_checkins_jsonREAD

Get every automatic check-in answer across all accessible projects, newest-first. via GET /{accountId}/checkins.json

api
basecamp_get_by_accountid_circles_people_jsonREAD

List all account users who can be pinged **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/circles/people.json

api
basecamp_get_by_accountid_client_approvals_by_approvalidREAD

Get a single client approval by id via GET /{accountId}/client/approvals/{approvalId}

api
basecamp_get_by_accountid_client_correspondences_by_correspondenceidREAD

Get a single client correspondence by id via GET /{accountId}/client/correspondences/{correspondenceId}

api
basecamp_get_by_accountid_cloud_files_by_cloudfileidREAD

Get a single cloud file by id via GET /{accountId}/cloud_files/{cloudFileId}

api
basecamp_get_by_accountid_comments_by_commentidREAD

Get a single comment by id via GET /{accountId}/comments/{commentId}

api
basecamp_get_by_accountid_comments_jsonREAD

Get every comment across all accessible projects, newest-first (paginated). via GET /{accountId}/comments.json

api
basecamp_get_by_accountid_dock_tools_by_toolidREAD

Get a dock tool by id via GET /{accountId}/dock/tools/{toolId}

api
basecamp_get_by_accountid_documents_by_documentidREAD

Get a single document by id via GET /{accountId}/documents/{documentId}

api
basecamp_get_by_accountid_files_jsonREAD

Get every file recording across all accessible projects, newest-first (paginated). via GET /{accountId}/files.json

api
basecamp_get_by_accountid_forwards_jsonREAD

Get every inbox forward across all accessible projects, newest-first (paginated). via GET /{accountId}/forwards.json

api
basecamp_get_by_accountid_gauge_needles_by_needleidREAD

Get a gauge needle by ID via GET /{accountId}/gauge_needles/{needleId}

api
basecamp_get_by_accountid_google_documents_by_googledocumentidREAD

Get a single Google document by id via GET /{accountId}/google_documents/{googleDocumentId}

api
basecamp_get_by_accountid_inbox_forwards_by_forwardidREAD

Get a forward by ID via GET /{accountId}/inbox_forwards/{forwardId}

api
basecamp_get_by_accountid_inbox_forwards_by_forwardid_replies_by_replyidREAD

Get a forward reply by ID via GET /{accountId}/inbox_forwards/{forwardId}/replies/{replyId}

api
basecamp_get_by_accountid_inbox_forwards_by_forwardid_replies_jsonREAD

List all replies to a forward **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/inbox_forwards/{forwardId}/replies.json

api
basecamp_get_by_accountid_inboxes_by_inboxidREAD

Get an inbox by ID via GET /{accountId}/inboxes/{inboxId}

api
basecamp_get_by_accountid_inboxes_by_inboxid_inbox_forwards_jsonREAD

List all forwards in an inbox **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/inboxes/{inboxId}/inbox_forwards.json

api
basecamp_get_by_accountid_lineup_markers_jsonREAD

List all lineup markers for the account via GET /{accountId}/lineup/markers.json

api
basecamp_get_by_accountid_message_boards_by_boardidREAD

Get a message board via GET /{accountId}/message_boards/{boardId}

api
basecamp_get_by_accountid_message_boards_by_boardid_messages_jsonREAD

List messages on a message board **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/message_boards/{boardId}/messages.json

api
basecamp_get_by_accountid_messages_by_messageidREAD

Get a single message by id via GET /{accountId}/messages/{messageId}

api
basecamp_get_by_accountid_messages_jsonREAD

Get every message across all accessible projects, newest-first (paginated). via GET /{accountId}/messages.json

api
basecamp_get_by_accountid_my_assignments_completed_jsonREAD

Get the current user's completed assignments. via GET /{accountId}/my/assignments/completed.json

api
basecamp_get_by_accountid_my_assignments_due_jsonREAD

Get the current user's assignments filtered by due date scope. via GET /{accountId}/my/assignments/due.json

api
basecamp_get_by_accountid_my_assignments_jsonREAD

Get the current user's active assignments grouped into priorities and non_priorities. via GET /{accountId}/my/assignments.json

api
basecamp_get_by_accountid_my_bookmarks_jsonREAD

List the current user's bookmarks, most recently bookmarked first (paginated). via GET /{accountId}/my/bookmarks.json

api
basecamp_get_by_accountid_my_drafts_jsonREAD

List the current user's drafts across their active projects, most recently updated first (paginated, capped at 250 like /my/assignments). via GET /{accountId}/my/drafts.json

api
basecamp_get_by_accountid_my_notes_jsonREAD

Get the authenticated user's note — a per-person notebook singleton at /my/notes.json. via GET /{accountId}/my/notes.json

api
basecamp_get_by_accountid_my_preferences_jsonREAD

Get the current user's preferences via GET /{accountId}/my/preferences.json

api
basecamp_get_by_accountid_my_profile_jsonREAD

Get the current authenticated user's profile via GET /{accountId}/my/profile.json

api
basecamp_get_by_accountid_my_question_reminders_jsonREAD

Get pending check-in reminders for the current user Returns questions that are pending a response from the authenticated user. via GET /{accountId}/my/question_reminders.json

api
basecamp_get_by_accountid_my_readings_bubble_ups_jsonREAD

Get the current user's current and scheduled bubble-ups (paginated, 50 per page). via GET /{accountId}/my/readings/bubble_ups.json

api
basecamp_get_by_accountid_my_readings_jsonREAD

Get the current user's notification inbox (the "Hey!" menu). via GET /{accountId}/my/readings.json

api
basecamp_get_by_accountid_my_recent_projects_jsonREAD

List the projects the current user has most recently visited, most recent visit first. via GET /{accountId}/my/recent_projects.json

api
basecamp_get_by_accountid_people_by_personidREAD

Get a person by ID via GET /{accountId}/people/{personId}

api
basecamp_get_by_accountid_people_by_personid_out_of_office_jsonREAD

Get the out of office status for a person via GET /{accountId}/people/{personId}/out_of_office.json

api
basecamp_get_by_accountid_people_jsonREAD

List all people visible to the current user **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/people.json

api
basecamp_get_by_accountid_projects_by_projectidREAD

Get a single project by id via GET /{accountId}/projects/{projectId}

api
basecamp_get_by_accountid_projects_by_projectid_gauge_needles_jsonREAD

List gauge needles for a project, ordered newest first. via GET /{accountId}/projects/{projectId}/gauge/needles.json

api
basecamp_get_by_accountid_projects_by_projectid_people_jsonREAD

List all active people on a project **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/projects/{projectId}/people.json

api
basecamp_get_by_accountid_projects_by_projectid_timeline_jsonREAD

Get project timeline via GET /{accountId}/projects/{projectId}/timeline.json

api
basecamp_get_by_accountid_projects_by_projectid_timesheet_jsonREAD

Get timesheet for a specific project via GET /{accountId}/projects/{projectId}/timesheet.json

api
basecamp_get_by_accountid_projects_jsonREAD

List projects (active by default; optionally archived/trashed) **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/projects.json

api
basecamp_get_by_accountid_projects_recordings_jsonREAD

List recordings of a given type across projects **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/projects/recordings.json

api
basecamp_get_by_accountid_question_answers_by_answeridREAD

Get a single answer by id via GET /{accountId}/question_answers/{answerId}

api
basecamp_get_by_accountid_questionnaires_by_questionnaireidREAD

Get a questionnaire (automatic check-ins container) by id via GET /{accountId}/questionnaires/{questionnaireId}

api
basecamp_get_by_accountid_questionnaires_by_questionnaireid_questions_jsonREAD

List all questions in a questionnaire **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/questionnaires/{questionnaireId}/questions.json

api
basecamp_get_by_accountid_questions_by_questionidREAD

Get a single question by id via GET /{accountId}/questions/{questionId}

api
basecamp_get_by_accountid_questions_by_questionid_answers_by_by_personidREAD

Get all answers from a specific person for a question **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/questions/{questionId}/answers/by/{personId}

api
basecamp_get_by_accountid_questions_by_questionid_answers_by_jsonREAD

List all people who have answered a question (answerers) **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/questions/{questionId}/answers/by.json

api
basecamp_get_by_accountid_questions_by_questionid_answers_jsonREAD

List all answers for a question **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/questions/{questionId}/answers.json

api
basecamp_get_by_accountid_recordings_by_recordingid_bookmark_jsonREAD

Report whether the current user has bookmarked the recording. via GET /{accountId}/recordings/{recordingId}/bookmark.json

api
basecamp_get_by_accountid_recordings_by_recordingid_boosts_jsonREAD

List boosts on a recording via GET /{accountId}/recordings/{recordingId}/boosts.json

api
basecamp_get_by_accountid_recordings_by_recordingid_comments_jsonREAD

List comments on a recording **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/recordings/{recordingId}/comments.json

api
basecamp_get_by_accountid_recordings_by_recordingid_events_by_eventid_boosts_jsonREAD

List boosts on a specific event within a recording via GET /{accountId}/recordings/{recordingId}/events/{eventId}/boosts.json

api
basecamp_get_by_accountid_recordings_by_recordingid_events_jsonREAD

List all events for a recording **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/recordings/{recordingId}/events.json

api
basecamp_get_by_accountid_recordings_by_recordingid_subscription_jsonREAD

Get subscription information for a recording via GET /{accountId}/recordings/{recordingId}/subscription.json

api
basecamp_get_by_accountid_recordings_by_recordingid_timesheet_jsonREAD

Get timesheet for a specific recording via GET /{accountId}/recordings/{recordingId}/timesheet.json

api
basecamp_get_by_accountid_reports_gauges_jsonREAD

List gauges across all projects the authenticated user has access to. via GET /{accountId}/reports/gauges.json

api
basecamp_get_by_accountid_reports_progress_jsonREAD

Get account-wide activity feed (progress report) via GET /{accountId}/reports/progress.json

api
basecamp_get_by_accountid_reports_schedules_upcoming_jsonREAD

Get upcoming schedule entries and assignable items within a date window. via GET /{accountId}/reports/schedules/upcoming.json

api
basecamp_get_by_accountid_reports_timesheet_jsonREAD

Get account-wide timesheet report via GET /{accountId}/reports/timesheet.json

api
basecamp_get_by_accountid_reports_todos_assigned_by_personidREAD

Get todos assigned to a specific person via GET /{accountId}/reports/todos/assigned/{personId}

api
basecamp_get_by_accountid_reports_todos_assigned_jsonREAD

List people who can be assigned todos via GET /{accountId}/reports/todos/assigned.json

api
basecamp_get_by_accountid_reports_todos_overdue_jsonREAD

Get overdue todos grouped by lateness via GET /{accountId}/reports/todos/overdue.json

api
basecamp_get_by_accountid_reports_users_progress_by_personid_jsonREAD

Get a person's activity timeline via GET /{accountId}/reports/users/progress/{personId}.json

api
basecamp_get_by_accountid_schedule_entries_by_entryidREAD

Get a single schedule entry by id. via GET /{accountId}/schedule_entries/{entryId}

api
basecamp_get_by_accountid_schedule_entries_by_entryid_occurrences_by_dateREAD

Get a specific occurrence of a recurring schedule entry via GET /{accountId}/schedule_entries/{entryId}/occurrences/{date}

api
basecamp_get_by_accountid_schedules_by_scheduleidREAD

Get a schedule via GET /{accountId}/schedules/{scheduleId}

api
basecamp_get_by_accountid_schedules_by_scheduleid_entries_jsonREAD

List entries on a schedule **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/schedules/{scheduleId}/entries.json

api
basecamp_get_by_accountid_search_jsonREAD

Search for content across the account via GET /{accountId}/search.json

api
basecamp_get_by_accountid_searches_metadata_jsonREAD

Get search metadata (available filter options) via GET /{accountId}/searches/metadata.json

api
basecamp_get_by_accountid_stacks_by_folderidREAD

Get one folder, with the projects grouped inside it expanded under `projects`. via GET /{accountId}/stacks/{folderId}

api
basecamp_get_by_accountid_stacks_jsonREAD

List the authenticated user's folders in home-screen order. via GET /{accountId}/stacks.json

api
basecamp_get_by_accountid_templates_by_templateidREAD

Get a single template by id via GET /{accountId}/templates/{templateId}

api
basecamp_get_by_accountid_templates_by_templateid_project_constructions_by_constructionidREAD

Get the status of a project construction via GET /{accountId}/templates/{templateId}/project_constructions/{constructionId}

api
basecamp_get_by_accountid_templates_jsonREAD

List all templates visible to the current user **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/templates.json

api
basecamp_get_by_accountid_timesheet_entries_by_entryidREAD

Get a single timesheet entry via GET /{accountId}/timesheet_entries/{entryId}

api
basecamp_get_by_accountid_todolists_by_idREAD

Get a single todolist or todolist group by id The endpoint is polymorphic, but it answers with one shape: BC3 has no group model, so both… via GET /{accountId}/todolists/{id}

api
basecamp_get_by_accountid_todolists_by_todolistid_groups_jsonREAD

List groups in a todolist **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/todolists/{todolistId}/groups.json

api
basecamp_get_by_accountid_todolists_by_todolistid_todos_jsonREAD

List todos in a todolist **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/todolists/{todolistId}/todos.json

api
basecamp_get_by_accountid_todos_by_todoidREAD

Get a single todo by id via GET /{accountId}/todos/{todoId}

api
basecamp_get_by_accountid_todos_completed_jsonREAD

Completed to-dos across all accessible projects, grouped by project (paginated). via GET /{accountId}/todos/completed.json

api
basecamp_get_by_accountid_todos_no_due_date_jsonREAD

Open to-dos with no due date across all accessible projects, grouped by project (paginated). via GET /{accountId}/todos/no_due_date.json

api
basecamp_get_by_accountid_todos_open_jsonREAD

Active, incomplete to-dos across all accessible projects, grouped by project (paginated). via GET /{accountId}/todos/open.json

api
basecamp_get_by_accountid_todos_overdue_jsonREAD

Get every overdue to-do across all accessible projects, oldest-due-date-first. via GET /{accountId}/todos/overdue.json

api
basecamp_get_by_accountid_todos_unassigned_jsonREAD

Open, unassigned to-dos across all accessible projects, grouped by project (paginated). via GET /{accountId}/todos/unassigned.json

api
basecamp_get_by_accountid_todosets_by_todosetidREAD

Get a todoset (container for todolists in a project) via GET /{accountId}/todosets/{todosetId}

api
basecamp_get_by_accountid_todosets_by_todosetid_hill_jsonREAD

Get the hill chart for a todoset via GET /{accountId}/todosets/{todosetId}/hill.json

api
basecamp_get_by_accountid_todosets_by_todosetid_todolists_jsonREAD

List todolists in a todoset **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/todosets/{todosetId}/todolists.json

api
basecamp_get_by_accountid_uploads_by_uploadidREAD

Get a single upload by id via GET /{accountId}/uploads/{uploadId}

api
basecamp_get_by_accountid_uploads_by_uploadid_versions_jsonREAD

List versions of an upload **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/uploads/{uploadId}/versions.json

api
basecamp_get_by_accountid_vaults_by_vaultidREAD

Get a single vault by id via GET /{accountId}/vaults/{vaultId}

api
basecamp_get_by_accountid_vaults_by_vaultid_documents_jsonREAD

List documents in a vault **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/vaults/{vaultId}/documents.json

api
basecamp_get_by_accountid_vaults_by_vaultid_uploads_jsonREAD

List uploads in a vault **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/vaults/{vaultId}/uploads.json

api
basecamp_get_by_accountid_vaults_by_vaultid_vaults_jsonREAD

List vaults (subfolders) in a vault **Pagination**: Uses Link header (RFC5988). via GET /{accountId}/vaults/{vaultId}/vaults.json

api
basecamp_get_by_accountid_webhooks_by_webhookidREAD

Get a single webhook by id via GET /{accountId}/webhooks/{webhookId}

api
basecamp_post_by_accountid_buckets_by_bucketid_card_tables_by_cardtableid_wormholes_jsonWRITE

Create a wormhole linking this card table to a column on another card table. via POST /{accountId}/buckets/{bucketId}/card_tables/{cardTableId}/wormholes.json

api
basecamp_post_by_accountid_buckets_by_bucketid_card_tables_columns_by_columnid_on_hold_jsonWRITE

Enable on-hold section in a column via POST /{accountId}/buckets/{bucketId}/card_tables/columns/{columnId}/on_hold.json

api
basecamp_post_by_accountid_buckets_by_bucketid_categories_jsonWRITE

Create a new message type in a project via POST /{accountId}/buckets/{bucketId}/categories.json

api
basecamp_post_by_accountid_buckets_by_bucketid_chats_by_campfireid_integrations_jsonWRITE

Create a new chatbot for a campfire via POST /{accountId}/buckets/{bucketId}/chats/{campfireId}/integrations.json

api
basecamp_post_by_accountid_buckets_by_bucketid_dock_tools_jsonWRITE

Create a tool in a project dock via POST /{accountId}/buckets/{bucketId}/dock/tools.json

api
basecamp_post_by_accountid_buckets_by_bucketid_todosets_by_todosetid_todos_jsonWRITE

Create a to-do directly under a project's to-do set, outside any to-do list. via POST /{accountId}/buckets/{bucketId}/todosets/{todosetId}/todos.json

api
basecamp_post_by_accountid_buckets_by_bucketid_vaults_by_vaultid_cloud_files_jsonWRITE

Create a new cloud file in a vault. via POST /{accountId}/buckets/{bucketId}/vaults/{vaultId}/cloud_files.json

api
basecamp_post_by_accountid_buckets_by_bucketid_vaults_by_vaultid_google_documents_jsonWRITE

Create a new Google document in a vault. via POST /{accountId}/buckets/{bucketId}/vaults/{vaultId}/google_documents.json

api
basecamp_post_by_accountid_buckets_by_bucketid_webhooks_jsonWRITE

Create a new webhook for a project via POST /{accountId}/buckets/{bucketId}/webhooks.json

api
basecamp_post_by_accountid_card_tables_by_cardtableid_columns_jsonWRITE

Create a column in a card table via POST /{accountId}/card_tables/{cardTableId}/columns.json

api
basecamp_post_by_accountid_card_tables_by_cardtableid_moves_jsonWRITE

Move a column within a card table via POST /{accountId}/card_tables/{cardTableId}/moves.json

api
basecamp_post_by_accountid_card_tables_cards_by_cardid_moves_jsonWRITE

Move a card to a different column via POST /{accountId}/card_tables/cards/{cardId}/moves.json

api
basecamp_post_by_accountid_card_tables_cards_by_cardid_positions_jsonWRITE

Reposition a step within a card via POST /{accountId}/card_tables/cards/{cardId}/positions.json

api
basecamp_post_by_accountid_card_tables_cards_by_cardid_steps_jsonWRITE

Create a step on a card via POST /{accountId}/card_tables/cards/{cardId}/steps.json

api
basecamp_post_by_accountid_card_tables_lists_by_columnid_cards_jsonWRITE

Create a card in a column via POST /{accountId}/card_tables/lists/{columnId}/cards.json

api
basecamp_post_by_accountid_card_tables_lists_by_columnid_subscription_jsonWRITE

Subscribe to a card column (watch for changes) via POST /{accountId}/card_tables/lists/{columnId}/subscription.json

api
basecamp_post_by_accountid_chats_by_campfireid_lines_jsonWRITE

Create a new line (message) in a campfire via POST /{accountId}/chats/{campfireId}/lines.json

api
basecamp_post_by_accountid_lineup_markers_jsonWRITE

Create a new lineup marker via POST /{accountId}/lineup/markers.json

api
basecamp_post_by_accountid_message_boards_by_boardid_messages_jsonWRITE

Create a new message on a message board via POST /{accountId}/message_boards/{boardId}/messages.json

api
basecamp_post_by_accountid_my_priorities_jsonWRITE

Add a recording to Up Next — the current user's ordered list of prioritized assignments (the priorities returned by GetMyAssignments). via POST /{accountId}/my/priorities.json

api
basecamp_post_by_accountid_my_priority_moves_jsonWRITE

Move an already-prioritized recording to a new 1-based position in Up Next (returns 204 No Content). via POST /{accountId}/my/priority_moves.json

api
basecamp_post_by_accountid_people_by_personid_out_of_office_jsonWRITE

Enable or replace out of office for a person. via POST /{accountId}/people/{personId}/out_of_office.json

api
basecamp_post_by_accountid_projects_by_projectid_gauge_needles_jsonWRITE

Create a gauge needle (progress update) for a project via POST /{accountId}/projects/{projectId}/gauge/needles.json

api
basecamp_post_by_accountid_projects_by_projectid_recent_visit_jsonWRITE

Record that the current user visited a project, moving it to the front of ListRecentProjects (returns 204 No Content). via POST /{accountId}/projects/{projectId}/recent_visit.json

api
basecamp_post_by_accountid_projects_jsonWRITE

Create a new project via POST /{accountId}/projects.json

api
basecamp_post_by_accountid_questionnaires_by_questionnaireid_questions_jsonWRITE

Create a new question in a questionnaire via POST /{accountId}/questionnaires/{questionnaireId}/questions.json

api
basecamp_post_by_accountid_questions_by_questionid_answers_jsonWRITE

Create a new answer for a question via POST /{accountId}/questions/{questionId}/answers.json

api
basecamp_post_by_accountid_questions_by_questionid_pause_jsonWRITE

Pause a check-in question (stops sending reminders) via POST /{accountId}/questions/{questionId}/pause.json

api
basecamp_post_by_accountid_recordings_by_messageid_pin_jsonWRITE

Pin a message to the top of the message board via POST /{accountId}/recordings/{messageId}/pin.json

api
basecamp_post_by_accountid_recordings_by_recordingid_bookmark_jsonWRITE

Bookmark a recording for the current user. via POST /{accountId}/recordings/{recordingId}/bookmark.json

api
basecamp_post_by_accountid_recordings_by_recordingid_boosts_jsonWRITE

Create a boost on a recording via POST /{accountId}/recordings/{recordingId}/boosts.json

api
basecamp_post_by_accountid_recordings_by_recordingid_comments_jsonWRITE

Create a new comment on a recording via POST /{accountId}/recordings/{recordingId}/comments.json

api
basecamp_post_by_accountid_recordings_by_recordingid_events_by_eventid_boosts_jsonWRITE

Create a boost on a specific event within a recording via POST /{accountId}/recordings/{recordingId}/events/{eventId}/boosts.json

api
basecamp_post_by_accountid_recordings_by_recordingid_spotlight_jsonWRITE

Put a recording's card in the spotlight area on its project or template home page. via POST /{accountId}/recordings/{recordingId}/spotlight.json

api
basecamp_post_by_accountid_recordings_by_recordingid_subscription_jsonWRITE

Subscribe the current user to a recording via POST /{accountId}/recordings/{recordingId}/subscription.json

api
basecamp_post_by_accountid_recordings_by_recordingid_timesheet_entries_jsonWRITE

Create a timesheet entry on a recording via POST /{accountId}/recordings/{recordingId}/timesheet/entries.json

api
basecamp_post_by_accountid_recordings_by_toolid_position_jsonWRITE

Enable a tool (show it on the project dock) via POST /{accountId}/recordings/{toolId}/position.json

api
basecamp_post_by_accountid_schedules_by_scheduleid_entries_jsonWRITE

Create a new schedule entry via POST /{accountId}/schedules/{scheduleId}/entries.json

api
basecamp_post_by_accountid_stacks_jsonWRITE

Create a folder for the authenticated user and file the given projects into it. via POST /{accountId}/stacks.json

api
basecamp_post_by_accountid_templates_by_templateid_project_constructions_jsonWRITE

Create a project from a template (asynchronous) via POST /{accountId}/templates/{templateId}/project_constructions.json

api
basecamp_post_by_accountid_templates_jsonWRITE

Create a new template via POST /{accountId}/templates.json

api
basecamp_post_by_accountid_todolists_by_todolistid_groups_jsonWRITE

Create a new group in a todolist via POST /{accountId}/todolists/{todolistId}/groups.json

api
basecamp_post_by_accountid_todolists_by_todolistid_todos_jsonWRITE

Create a new todo in a todolist via POST /{accountId}/todolists/{todolistId}/todos.json

api
basecamp_post_by_accountid_todos_by_todoid_completion_jsonWRITE

Mark a todo as complete via POST /{accountId}/todos/{todoId}/completion.json

api
basecamp_post_by_accountid_todosets_by_todosetid_todolists_jsonWRITE

Create a new todolist in a todoset via POST /{accountId}/todosets/{todosetId}/todolists.json

api
basecamp_post_by_accountid_uploads_by_uploadid_versions_jsonWRITE

Replace an upload's file with a new version The recording keeps its id, its URL and its comments; the previous file becomes a past version. via POST /{accountId}/uploads/{uploadId}/versions.json

api
basecamp_post_by_accountid_vaults_by_vaultid_documents_jsonWRITE

Create a new document in a vault via POST /{accountId}/vaults/{vaultId}/documents.json

api
basecamp_post_by_accountid_vaults_by_vaultid_uploads_jsonWRITE

Create a new upload in a vault via POST /{accountId}/vaults/{vaultId}/uploads.json

api
basecamp_post_by_accountid_vaults_by_vaultid_vaults_jsonWRITE

Create a new vault (subfolder) in a vault via POST /{accountId}/vaults/{vaultId}/vaults.json

api
basecamp_put_by_accountid_account_name_jsonWRITE

Rename the current account. via PUT /{accountId}/account/name.json

api
basecamp_put_by_accountid_buckets_by_bucketid_card_tables_columns_by_columnid_color_jsonWRITE

Set the color of a column via PUT /{accountId}/buckets/{bucketId}/card_tables/columns/{columnId}/color.json

api
basecamp_put_by_accountid_buckets_by_bucketid_card_tables_wormholes_by_wormholeidWRITE

Update a wormhole's destination column via PUT /{accountId}/buckets/{bucketId}/card_tables/wormholes/{wormholeId}

api
basecamp_put_by_accountid_buckets_by_bucketid_categories_by_typeidWRITE

Update an existing message type via PUT /{accountId}/buckets/{bucketId}/categories/{typeId}

api
basecamp_put_by_accountid_buckets_by_bucketid_chats_by_campfireid_integrations_by_chatbotidWRITE

Update an existing chatbot via PUT /{accountId}/buckets/{bucketId}/chats/{campfireId}/integrations/{chatbotId}

api
basecamp_put_by_accountid_calendars_by_calendaridWRITE

Update a calendar's display color. via PUT /{accountId}/calendars/{calendarId}

api
basecamp_put_by_accountid_card_tables_cards_by_cardidWRITE

Update an existing card via PUT /{accountId}/card_tables/cards/{cardId}

api
basecamp_put_by_accountid_card_tables_columns_by_columnidWRITE

Update an existing column via PUT /{accountId}/card_tables/columns/{columnId}

api
basecamp_put_by_accountid_card_tables_steps_by_stepidWRITE

Update an existing step via PUT /{accountId}/card_tables/steps/{stepId}

api
basecamp_put_by_accountid_card_tables_steps_by_stepid_completions_jsonWRITE

Set card step completion status (PUT with completion: "on" to complete, "" to uncomplete) via PUT /{accountId}/card_tables/steps/{stepId}/completions.json

api
basecamp_put_by_accountid_chats_by_campfireid_lines_by_lineidWRITE

Update an existing campfire line; the content is always treated as rich text (HTML). via PUT /{accountId}/chats/{campfireId}/lines/{lineId}

api
basecamp_put_by_accountid_cloud_files_by_cloudfileidWRITE

Replace a cloud file with a new complete representation. via PUT /{accountId}/cloud_files/{cloudFileId}

api
basecamp_put_by_accountid_comments_by_commentidWRITE

Update an existing comment via PUT /{accountId}/comments/{commentId}

api
basecamp_put_by_accountid_dock_tools_by_toolidWRITE

Update (rename) an existing tool via PUT /{accountId}/dock/tools/{toolId}

api
basecamp_put_by_accountid_documents_by_documentidWRITE

Replace a document with a new complete representation. via PUT /{accountId}/documents/{documentId}

api
basecamp_put_by_accountid_gauge_needles_by_needleidWRITE

Update a gauge needle's description. via PUT /{accountId}/gauge_needles/{needleId}

api
basecamp_put_by_accountid_google_documents_by_googledocumentidWRITE

Replace a Google document with a new complete representation. via PUT /{accountId}/google_documents/{googleDocumentId}

api
basecamp_put_by_accountid_lineup_markers_by_markeridWRITE

Update an existing lineup marker via PUT /{accountId}/lineup/markers/{markerId}

api
basecamp_put_by_accountid_messages_by_messageidWRITE

Update an existing message via PUT /{accountId}/messages/{messageId}

api
basecamp_put_by_accountid_my_notes_jsonWRITE

Replace the note's content, recording a new revision server-side. via PUT /{accountId}/my/notes.json

api
basecamp_put_by_accountid_my_preferences_jsonWRITE

Update the current user's preferences. via PUT /{accountId}/my/preferences.json

api
basecamp_put_by_accountid_my_profile_jsonWRITE

Update the current authenticated user's profile (returns 204 No Content) via PUT /{accountId}/my/profile.json

api
basecamp_put_by_accountid_my_unreads_jsonWRITE

Mark specified items as read via PUT /{accountId}/my/unreads.json

api
basecamp_put_by_accountid_projects_by_projectidWRITE

Update an existing project via PUT /{accountId}/projects/{projectId}

api
basecamp_put_by_accountid_projects_by_projectid_gauge_jsonWRITE

Enable or disable the gauge for a project. via PUT /{accountId}/projects/{projectId}/gauge.json

api
basecamp_put_by_accountid_projects_by_projectid_people_users_jsonWRITE

Update project access (grant/revoke/create people) via PUT /{accountId}/projects/{projectId}/people/users.json

api
basecamp_put_by_accountid_projects_by_projectid_status_active_jsonWRITE

Restore a project to active status from trash as well as from the archive (returns 204 No Content). via PUT /{accountId}/projects/{projectId}/status/active.json

api
basecamp_put_by_accountid_projects_by_projectid_status_archived_jsonWRITE

Archive a project, removing it from the active project list (returns 204 No Content). via PUT /{accountId}/projects/{projectId}/status/archived.json

api
basecamp_put_by_accountid_question_answers_by_answeridWRITE

Update an existing answer via PUT /{accountId}/question_answers/{answerId}

api
basecamp_put_by_accountid_questions_by_questionidWRITE

Update an existing question via PUT /{accountId}/questions/{questionId}

api
basecamp_put_by_accountid_questions_by_questionid_notification_settings_jsonWRITE

Update notification settings for a check-in question via PUT /{accountId}/questions/{questionId}/notification_settings.json

api
basecamp_put_by_accountid_recordings_by_recordingid_client_visibility_jsonWRITE

Set client visibility for a recording via PUT /{accountId}/recordings/{recordingId}/client_visibility.json

api
basecamp_put_by_accountid_recordings_by_recordingid_status_active_jsonWRITE

Unarchive a recording (restore to active status) via PUT /{accountId}/recordings/{recordingId}/status/active.json

api
basecamp_put_by_accountid_recordings_by_recordingid_status_archived_jsonWRITE

Archive a recording via PUT /{accountId}/recordings/{recordingId}/status/archived.json

api
basecamp_put_by_accountid_recordings_by_recordingid_status_trashed_jsonWRITE

Trash a recording via PUT /{accountId}/recordings/{recordingId}/status/trashed.json

api
basecamp_put_by_accountid_recordings_by_recordingid_subscription_jsonWRITE

Update subscriptions by adding or removing specific users via PUT /{accountId}/recordings/{recordingId}/subscription.json

api
basecamp_put_by_accountid_recordings_by_toolid_position_jsonWRITE

Reposition a tool on the project dock via PUT /{accountId}/recordings/{toolId}/position.json

api
basecamp_put_by_accountid_schedule_entries_by_entryidWRITE

Replace a schedule entry with a new complete representation. via PUT /{accountId}/schedule_entries/{entryId}

api
basecamp_put_by_accountid_schedules_by_scheduleidWRITE

Update schedule settings via PUT /{accountId}/schedules/{scheduleId}

api
basecamp_put_by_accountid_stacks_by_folderidWRITE

Rename a folder. via PUT /{accountId}/stacks/{folderId}

api
basecamp_put_by_accountid_templates_by_templateidWRITE

Update an existing template via PUT /{accountId}/templates/{templateId}

api
basecamp_put_by_accountid_timesheet_entries_by_entryidWRITE

Update a timesheet entry via PUT /{accountId}/timesheet_entries/{entryId}

api
basecamp_put_by_accountid_todolists_by_idWRITE

Replace a todolist (or todolist group) with a new complete representation. via PUT /{accountId}/todolists/{id}

api
basecamp_put_by_accountid_todolists_groups_by_groupid_position_jsonWRITE

Reposition a todolist group via PUT /{accountId}/todolists/groups/{groupId}/position.json

api
basecamp_put_by_accountid_todos_by_todoidWRITE

Replace a todo with a new complete representation. via PUT /{accountId}/todos/{todoId}

api
basecamp_put_by_accountid_todos_by_todoid_position_jsonWRITE

Reposition a todo within its todolist via PUT /{accountId}/todos/{todoId}/position.json

api
basecamp_put_by_accountid_todosets_by_todosetid_hills_settings_jsonWRITE

Track or untrack todolists on a hill chart via PUT /{accountId}/todosets/{todosetId}/hills/settings.json

api
basecamp_put_by_accountid_todosets_todolists_by_todolistid_position_jsonWRITE

Reposition a to-do list within its to-do set. via PUT /{accountId}/todosets/todolists/{todolistId}/position.json

api
basecamp_put_by_accountid_uploads_by_uploadidWRITE

Update an existing upload via PUT /{accountId}/uploads/{uploadId}

api
basecamp_put_by_accountid_vaults_by_vaultidWRITE

Update an existing vault via PUT /{accountId}/vaults/{vaultId}

api
basecamp_put_by_accountid_webhooks_by_webhookidWRITE

Update an existing webhook via PUT /{accountId}/webhooks/{webhookId}

api

Put Basecamp behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.