Building on Basecamp
Basecamp has a public API and a suite of official developer tools for building integrations, automations, and custom workflows. This article is for developers — if you're looking for ready-made third-party integrations, see Third-Party Integrations instead.
The Basecamp API
Integrate your own app or service with Basecamp. Use the API to create projects, manage to-dos, post messages, handle files, and more. All requests go over HTTPS and authenticate with OAuth 2.0.
Example: automatically create a new Basecamp project and populate it with a standard set of to-do lists every time a client signs a contract in your CRM.
The full API reference, including authentication details, pagination, rate limits, and endpoint documentation, lives on GitHub: github.com/basecamp/bc3-api.
🗒️ NOTE: The first rate limit you'll commonly hit is 50 requests per 10-second period per IP address. The API docs cover rate limiting and how to handle it gracefully.
The Basecamp SDK
Work with the Basecamp API in your language of choice without building HTTP clients from scratch. The SDK also ships an OpenAPI spec if you prefer code generation.
Example: build an internal Python script that pulls all overdue to-dos across your account each morning and emails a summary to your team.
Available for: Go, Ruby, Python, TypeScript, Swift, and Kotlin. Full SDK documentation: github.com/basecamp/basecamp-sdk.
Chatbots
Post updates from external services directly into a Basecamp Chat room — no manual copy-pasting required.
Example: route GitHub deployment notifications into your team's Chat room so everyone sees when a release goes out.
To set one up, open a project, go to Chat, click •••, and select Configure chatbots. Each chatbot gets a unique URL that accepts incoming payloads. For the full payload format and options, see the Chatbots API guide.
Webhooks
Get notified the instant something happens in your Basecamp account — a to-do is completed, a message is posted, a file is uploaded — without polling the API. Basecamp sends a POST request to your server the moment the event occurs.
Example: trigger an automated Slack notification to a client channel whenever a to-do assigned to them gets marked complete.
Webhooks are configured per project. Go to the more options menu "•••" located on the top right of the project to create or manage your webhook. For the full list of subscribable events and payload shapes, see the Webhooks API guide.
Listing your integration
If you've built something on the Basecamp API and want it listed on basecamp.com/integrations, open a pull request on the bc3-integrations repository. The README there has everything you need.