Basecamp
Overview
Pre-built tooling
✅ Authorization
| Tools | Status |
|---|---|
| Pre-built authorization (OAuth) | ✅ |
| Credentials auto-refresh | ✅ |
| Auth parameters validation | ✅ |
| Pre-built authorization UI | ✅ |
| Custom authorization UI | ✅ |
| End-user authorization guide | ✅ |
| Expired credentials detection | ✅ |
✅ Read & write data
| Tools | Status |
|---|---|
| Pre-built integrations | ✅ |
| API unification | ✅ |
| 2-way sync | ✅ |
| Webhooks from Tenklo on data modifications | ✅ |
| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: <48h) |
| Proxy requests | ✅ |
✅ Observability & data quality
| Tools | Status |
|---|---|
| HTTP request logging | ✅ |
| End-to-end type safety | ✅ |
| Data runtime validation | ✅ |
| OpenTelemetry export | ✅ |
| Slack alerts on errors | ✅ |
| Integration status API | ✅ |
✅ Customization
| Tools | Status |
|---|---|
| Create or customize use-cases | ✅ |
| Pre-configured pagination | 🚫 (time to contribute: <48h) |
| Pre-configured rate-limit handling | 🚫 (time to contribute: <48h) |
| Per-customer configurations | ✅ |
Others
| Function name | Description | Type | Source code |
|---|---|---|---|
archive-project | Archive a project. | Action | 🔗 Github |
archive-recording | Archive any recording. | Action | 🔗 Github |
change-card-table-column-color | Change a card table column's color. | Action | 🔗 Github |
complete-todo | Mark a to-do as completed. | Action | 🔗 Github |
create-campfire-line | Post a line (message) to a Campfire. | Action | 🔗 Github |
create-card-table-card | Create a card in a Card Table column. | Action | 🔗 Github |
create-card-table-column | Create a new column on a Card Table. | Action | 🔗 Github |
create-card-table-step | Create a checklist step on a card table card. | Action | 🔗 Github |
create-comment | Post a comment on any recording | Action | 🔗 Github |
create-document | Create a document in a vault. | Action | 🔗 Github |
create-message | Create a message on a project message board. | Action | 🔗 Github |
create-project | Create a project. | Action | 🔗 Github |
create-schedule-entry | Create a schedule entry on a project schedule | Action | 🔗 Github |
create-todo | Create a to-do in a specific to-do list, resolving assignee/completion-subscriber emails to person IDs first. | Action | 🔗 Github |
create-todolist-group | Create a group (section) within a to-do list. | Action | 🔗 Github |
create-todolist | Create a to-do list under a project to-do set. | Action | 🔗 Github |
create-upload-version | Replace an upload file with a new version. | Action | 🔗 Github |
create-upload | Attach a previously-staged file (from upload-attachment) into a vault as an Upload record. | Action | 🔗 Github |
create-vault-folder | Create a sub-folder inside a vault. | Action | 🔗 Github |
delete-campfire-line | Permanently delete a Campfire line. | Action | 🔗 Github |
disable-tool | Disable a project dock tool, removing it from the dock without deleting its content (reversible via enable-tool). | Action | 🔗 Github |
enable-tool | Enable a project's dock tool (e.g. Message Board, Docs & Files, Chat, Card Table, Calendar), adding it back to the dock. | Action | 🔗 Github |
fetch-accounts | Get the token owner's identity and the list of Basecamp accounts (and other 37signals products) the token can access. | Action | 🔗 Github |
fetch-todolists | Fetch all to-do lists in a project's to-do set. | Action | 🔗 Github |
get-account | Get details about the current Basecamp account (subscription plan, limits, trial status). | Action | 🔗 Github |
get-campfire-line | Retrieve a single Campfire line. | Action | 🔗 Github |
get-campfire | Get a project's Campfire (chat room). | Action | 🔗 Github |
get-card-table-card | Retrieve a single Card Table card. | Action | 🔗 Github |
get-card-table-column | Retrieve a single Card Table column. | Action | 🔗 Github |
get-card-table | Get a Basecamp card table (Kanban board) including its columns. | Action | 🔗 Github |
get-comment | Retrieve a single comment. | Action | 🔗 Github |
get-document | Retrieve a single document. | Action | 🔗 Github |
get-message-board | Get a project's message board (the container for all its messages) and message count. | Action | 🔗 Github |
get-message | Retrieve a single message. | Action | 🔗 Github |
get-my-preferences | Get the current token owner's account preferences (time zone, first day of week, time format). | Action | 🔗 Github |
get-my-profile | Get the current token owner's own profile. | Action | 🔗 Github |
get-person | Retrieve a single person's profile by ID. | Action | 🔗 Github |
get-project | Retrieve a single project, including its dock (tool list) and team sample. | Action | 🔗 Github |
get-recording-events | Get the audit-trail events for any recording | Action | 🔗 Github |
get-schedule-entry | Retrieve a single schedule entry. | Action | 🔗 Github |
get-schedule | Get a project's schedule (calendar). | Action | 🔗 Github |
get-todo | Retrieve a single to-do. | Action | 🔗 Github |
get-todolist | Get a single to-do list. | Action | 🔗 Github |
get-todoset | Get a project's to-do set and a summary list of its to-do lists. | Action | 🔗 Github |
get-tool | Get a single dock tool (e.g. a project's Chat, Card Table, or Message Board tool object) by its ID. | Action | 🔗 Github |
get-upload-versions | List the version history of an upload's file content. | Action | 🔗 Github |
get-upload | Retrieve a single upload's metadata. | Action | 🔗 Github |
get-vault | Get a project's top-level vault (Docs & Files) or a sub-folder vault. | Action | 🔗 Github |
list-campfire-lines | List messages (lines) in a Campfire. | Action | 🔗 Github |
list-campfire-uploads | List file uploads posted in a Campfire, newest first. | Action | 🔗 Github |
list-card-table-cards | List the cards in a Card Table column. | Action | 🔗 Github |
list-comments | List comments on any recording (to-do, message, document, upload, card, schedule entry, to-do list, etc). | Action | 🔗 Github |
list-documents | List documents in a vault. | Action | 🔗 Github |
list-messages | List messages on a project's message board | Action | 🔗 Github |
list-people | List all people visible to the current user across the whole account. | Action | 🔗 Github |
list-pingable-people | List people on the account who can be pinged (direct messaged). | Action | 🔗 Github |
list-project-people | List the people who have access to a specific project. | Action | 🔗 Github |
list-projects | List active projects visible to the current user. | Action | 🔗 Github |
list-recordings-by-type | List all recordings of a given type across one or more projects, account-wide. | Action | 🔗 Github |
list-schedule-entries | List entries (events) on a project's schedule. | Action | 🔗 Github |
list-todolist-groups | List the sub-groups (sections) within a to-do list. | Action | 🔗 Github |
list-todos | List active (non-completed) to-dos in a to-do list. | Action | 🔗 Github |
list-uploads | List file uploads in a vault. | Action | 🔗 Github |
list-vault-folders | List sub-folders (nested vaults) inside a vault. | Action | 🔗 Github |
move-card-table-card | Move a card to a different column (and optionally a position within it). | Action | 🔗 Github |
move-card-table-column | Reposition a column within its Card Table. | Action | 🔗 Github |
pin-message | Pin a message to the top of the message board. | Action | 🔗 Github |
remove-card-table-column-on-hold | Remove the on-hold section from a card table column | Action | 🔗 Github |
reposition-card-table-step | Change the position of a step within its card. | Action | 🔗 Github |
reposition-todo | Change a to-do's position within its list, optionally moving it to a different to-do list. | Action | 🔗 Github |
reposition-todolist-group | Change a to-do list group's position within its parent to-do list. | Action | 🔗 Github |
reposition-todolist | Change a to-do list's position within its to-do set. | Action | 🔗 Github |
reposition-tool | Change a dock tool's position in the project dock. | Action | 🔗 Github |
set-card-table-column-on-hold | Add an on-hold section to a Card Table column (used to visually pause cards within a column). | Action | 🔗 Github |
set-card-table-step-completion | Mark a card table step as completed or uncompleted. | Action | 🔗 Github |
set-recording-client-visibility | Toggle whether clients can see a recording | Action | 🔗 Github |
trash-project | Move a project to the trash (recoverable for 30 days, then auto-deleted). | Action | 🔗 Github |
trash-recording | Move any recording (to-do, to-do list, message, document, upload, card, column, step, schedule entry, comment, etc.) to the account trash. | Action | 🔗 Github |
unarchive-project | Restore a project from the archive or trash back to active. | Action | 🔗 Github |
unarchive-recording | Restore an archived recording to active | Action | 🔗 Github |
uncomplete-todo | Mark a to-do as not completed. | Action | 🔗 Github |
unpin-message | Unpin a message. | Action | 🔗 Github |
unwatch-card-table-column | Unsubscribe the current user from notifications for a Card Table column. | Action | 🔗 Github |
update-campfire-line | Edit a Campfire line's content. | Action | 🔗 Github |
update-card-table-card | Update a card's title, content, due date, or assignees. | Action | 🔗 Github |
update-card-table-column | Update a card table column title or description. | Action | 🔗 Github |
update-card-table-step | Update a card step title, due date, or assignees. | Action | 🔗 Github |
update-comment | Update a comment's content. | Action | 🔗 Github |
update-document | Update a document title or content. | Action | 🔗 Github |
update-message | Update a message's subject, content, or category. | Action | 🔗 Github |
update-project-access | Grant, revoke, or create-and-grant people's access to a project. | Action | 🔗 Github |
update-project | Update a project's name, description, schedule dates, or access policy. | Action | 🔗 Github |
update-schedule-entry | Update a schedule entry's summary, times, or other fields. | Action | 🔗 Github |
update-schedule | Change whether a schedule includes due dates from to-dos, cards, and steps. | Action | 🔗 Github |
update-todo | Update a to-do's content, description, dates, or assignees. | Action | 🔗 Github |
update-todolist | Rename a to-do list or change its description. | Action | 🔗 Github |
update-tool | Rename a dock tool. | Action | 🔗 Github |
update-upload | Update a Basecamp upload metadata (base_name and description) without replacing the file content. | Action | 🔗 Github |
update-vault-folder | Rename a vault folder. | Action | 🔗 Github |
upload-attachment | Upload raw file bytes to Basecamp blob storage and get back an attachable_sgid | Action | 🔗 Github |
upload-campfire-file | Upload a file directly into a Campfire as a chat attachment. | Action | 🔗 Github |
watch-card-table-column | Subscribe the current user to notifications for a Card Table column. | Action | 🔗 Github |
campfire-lines | Sync chat lines across all known projects' Campfires. | Sync | 🔗 Github |
card-table-cards | Sync Kanban cards across all known projects' Card Tables. | Sync | 🔗 Github |
comments | Sync comments across all known recordings | Sync | 🔗 Github |
documents | Sync documents across all known projects vaults including sub-folders | Sync | 🔗 Github |
messages | Sync messages across all known project message boards | Sync | 🔗 Github |
people | Sync people (account-wide, not scoped to any one project) | Sync | 🔗 Github |
projects | Sync projects. | Sync | 🔗 Github |
schedule-entries | Sync schedule entries (calendar events) across all known projects | Sync | 🔗 Github |
todolists | Sync to-do lists across all known projects to-do sets. | Sync | 🔗 Github |
todos | Syncs to-dos from Basecamp for the specified projects | Sync | 🔗 Github |
uploads | Sync file uploads across all known projects vaults including sub-folders. | Sync | 🔗 Github |
Access requirements
| Pre-Requisites | Status | Comment |
|---|---|---|
| Paid dev account | ✅ Not required | Free, self-signup here. |
| Paid test account | ✅ Not required | Create free account for testing. |
| Partnership | ✅ Not required | |
| App review | ✅ Not required | |
| Security audit | ✅ Not required |
Setup guide
Go to Basecamp's signup page and create an account.
Create & configure a Basecamp app
- Start creating a Basecamp app by heading to the following page.
- Click Register another application to open the application registration form.
- Fill in the About section and configure the Redirect URL as follows:
https://api.tenklo.dev/oauth/callback. - Select the products your app integrates with.
- Submit Your Application.
- Once your application has been created, navigate to the specific app page and copy the
Client IDandClient Secret. You will need to specify these in Tenklo later.
Follow the Quickstart.
Need help getting started? Get help in the community.
Contribute improvements to the setup guide by editing this page
Useful links
| Topic | Links |
|---|---|
| General | Website |
| Create a test account | |
| Developer | API documentation |
| Authorization documentation | |
| Register an OAuth app | |
| Details on rate limits |
Contribute useful links by editing this page
API gotchas
- When creating a new connection in Tenklo, you will need to add the
appDetails, configuration parameter in the formatMyApp ([email protected]), which will be appended to the request as a header:User-Agent: MyApp ([email protected]). This information will be used to get in touch if you’re doing something wrong(so the provider can warn you before you’re blocked) or something awesome (so the provider can congratulate you). Requests without a validUser-Agentheader are rejected. - You will also need to add in your
accountIdconnection configuration parameter.Contribute API gotchas by editing this page
Going further
Connect to Basecamp
Guide to connect to Basecamp using Connect UI