Basecamp Schedule Entries API
Manage individual schedule events and recurring entries
Manage individual schedule events and recurring entries
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/basecamp-schedule-entries-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Basecamp Schedule Entries API
description: The Basecamp API is a REST API that provides programmatic access to Basecamp's project management and team communication platform.
version: '1.0'
contact:
name: Basecamp Developer Support
url: https://github.com/basecamp/bc3-api
termsOfService: https://basecamp.com/terms
servers:
- url: https://3.basecampapi.com/{accountId}
description: Production Server
variables:
accountId:
description: Your Basecamp account ID
default: '999999999'
security:
- bearerAuth: []
tags:
- name: Schedule Entries
description: Manage individual schedule events and recurring entries
paths:
/schedules/{scheduleId}/entries.json:
get:
operationId: listScheduleEntries
summary: List schedule entries
description: Returns a paginated list of active schedule entries in the specified schedule.
tags:
- Schedule Entries
parameters:
- $ref: '#/components/parameters/ScheduleId'
- name: status
in: query
required: false
description: Filter by status.
schema:
type: string
enum:
- archived
- trashed
responses:
'200':
description: List of schedule entries
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ScheduleEntry'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
post:
operationId: createScheduleEntry
summary: Create a schedule entry
description: Creates a new schedule entry in the specified schedule. Requires a summary, start time, and end time.
tags:
- Schedule Entries
parameters:
- $ref: '#/components/parameters/ScheduleId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleEntryCreateRequest'
responses:
'201':
description: Schedule entry created
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleEntry'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/schedule_entries/{entryId}.json:
get:
operationId: getScheduleEntry
summary: Get a schedule entry
description: Returns the schedule entry with the given ID.
tags:
- Schedule Entries
parameters:
- $ref: '#/components/parameters/EntryId'
responses:
'200':
description: Schedule entry details
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleEntry'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateScheduleEntry
summary: Update a schedule entry
description: Updates the summary, times, description, participants, or recurrence configuration of the specified schedule entry.
tags:
- Schedule Entries
parameters:
- $ref: '#/components/parameters/EntryId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleEntryCreateRequest'
responses:
'200':
description: Updated schedule entry
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleEntry'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
Recording:
type: object
description: A generic recording object representing any Basecamp content resource such as a message, to-do, document, comment, or upload.
properties:
id:
type: integer
description: Recording ID
status:
type: string
description: Recording status
enum:
- active
- archived
- trashed
visible_to_clients:
type: boolean
description: Whether this recording is visible to client users
created_at:
type: string
format: date-time
description: Timestamp when the recording was created
updated_at:
type: string
format: date-time
description: Timestamp when the recording was last updated
title:
type: string
description: Title or summary of the recording
inherits_status:
type: boolean
description: Whether this recording inherits its status from a parent
type:
type: string
description: Recording type (e.g., Message, Todo, Document)
url:
type: string
format: uri
description: API URL for this recording
app_url:
type: string
format: uri
description: Web URL for this recording
bucket:
$ref: '#/components/schemas/BucketRef'
creator:
$ref: '#/components/schemas/PersonRef'
Error:
type: object
properties:
error:
type: string
description: Human-readable error message
BucketRef:
type: object
description: Reference to the project (bucket) that contains a resource
properties:
id:
type: integer
description: Project ID
name:
type: string
description: Project name
type:
type: string
description: Resource type, always "Project"
url:
type: string
format: uri
description: API URL for the project
app_url:
type: string
format: uri
description: Web URL for the project
RecurrenceSchedule:
type: object
description: Recurrence configuration for a schedule entry
properties:
frequency:
type: string
description: Recurrence frequency
enum:
- daily
- weekly
- monthly
- yearly
days:
type: array
description: Days of the week for weekly recurrence
items:
type: string
hour:
type: integer
description: Hour of the day for the recurrence
minute:
type: integer
description: Minute of the hour for the recurrence
week_instance:
type: integer
description: Week instance within the month for monthly recurrence
nullable: true
start_date:
type: string
format: date
description: Date when the recurrence starts
end_date:
type: string
format: date
description: Date when the recurrence ends
nullable: true
ScheduleEntry:
allOf:
- $ref: '#/components/schemas/Recording'
- type: object
properties:
summary:
type: string
description: Entry title/summary
description:
type: string
description: HTML-formatted entry description
all_day:
type: boolean
description: Whether this is an all-day event
starts_at:
type: string
format: date-time
description: Entry start time in ISO 8601 format
ends_at:
type: string
format: date-time
description: Entry end time in ISO 8601 format
participants:
type: array
description: People participating in this entry
items:
$ref: '#/components/schemas/PersonRef'
comments_count:
type: integer
description: Number of comments on this entry
recurrence_schedule:
$ref: '#/components/schemas/RecurrenceSchedule'
ScheduleEntryCreateRequest:
type: object
required:
- summary
- starts_at
- ends_at
properties:
summary:
type: string
description: Entry title/summary
starts_at:
type: string
format: date-time
description: Entry start time in ISO 8601 format
ends_at:
type: string
format: date-time
description: Entry end time in ISO 8601 format
description:
type: string
description: HTML-formatted entry description
participant_ids:
type: array
description: Person IDs to add as participants
items:
type: integer
all_day:
type: boolean
description: Whether this is an all-day event
notify:
type: boolean
description: Whether to notify participants
PersonRef:
type: object
description: Minimal reference to a Basecamp person
properties:
id:
type: integer
description: Person ID
attachable_sgid:
type: string
description: Signed global ID for attaching this person
name:
type: string
description: Full name
email_address:
type: string
format: email
description: Email address
personable_type:
type: string
description: Type of personable (User, Client, etc.)
title:
type: string
description: Job title
bio:
type: string
description: Short biography
location:
type: string
description: Location string
created_at:
type: string
format: date-time
description: Account creation timestamp
updated_at:
type: string
format: date-time
description: Last update timestamp
admin:
type: boolean
description: Whether the person is an account administrator
owner:
type: boolean
description: Whether the person is the account owner
client:
type: boolean
description: Whether the person is a client user
employee:
type: boolean
description: Whether the person is an employee
time_zone:
type: string
description: IANA time zone name
avatar_url:
type: string
format: uri
description: URL to the person's avatar image
company:
type: object
description: Company the person belongs to
properties:
id:
type: integer
description: Company ID
name:
type: string
description: Company name
responses:
NotFound:
description: Not found — the requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized — missing or invalid Bearer token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad request — missing required fields or invalid values
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
EntryId:
name: entryId
in: path
required: true
description: Unique identifier of the schedule entry
schema:
type: integer
ScheduleId:
name: scheduleId
in: path
required: true
description: Unique identifier of the schedule
schema:
type: integer
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'OAuth 2.0 Bearer token obtained via the Basecamp authorization code flow at launchpad.37signals.com. Include as "Authorization: Bearer {token}" in all requests.'
externalDocs:
description: Basecamp API Documentation
url: https://github.com/basecamp/bc3-api