Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@ API endpoints
<!-- START API ENDPOINTS -->
- [Account](sections/account.md#account)
- [Attachments](sections/attachments.md#attachments)
- [Backlinks](sections/backlinks.md#backlinks)
- [Boosts](sections/boosts.md#boosts)
- [Calendars](sections/calendars.md#calendars)
- [Campfires](sections/campfires.md#campfires)
Expand Down Expand Up @@ -333,10 +334,12 @@ API endpoints
- [Search](sections/search.md#search)
- [Spotlights](sections/spotlights.md#spotlights)
- [Subscriptions](sections/subscriptions.md#subscriptions)
- [Subtasks](sections/subtasks.md#subtasks)
- [Templates](sections/templates.md#templates)
- [Timeline](sections/timeline.md#timeline)
- [Timesheets](sections/timesheets.md#timesheets)
- [To-do list groups](sections/todolist_groups.md#to-do-list-groups)
- [To-do list templates](sections/template_library.md#to-do-list-templates)
- [To-do lists](sections/todolists.md#to-do-lists)
- [To-do sets](sections/todosets.md#to-do-sets)
- [To-dos](sections/todos.md#to-dos)
Expand Down
88 changes: 88 additions & 0 deletions sections/backlinks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
Backlinks
=========

A backlink records that one [recording][recordings] references another in its rich text content. The backlinks endpoint lists the recordings that reference a given recording — the "references to this" shown in the Basecamp UI.

Only backlinks from projects and pings the current user can access are returned, so two people requesting the same recording's backlinks may see different lists.

Endpoints:

- [Get backlinks](#get-backlinks)

Get backlinks
-------------

* `GET /recordings/2/backlinks.json` will return the most recent 20 recordings that reference the recording with an ID of `2`, newest first.

Each entry is a [recording][recordings] — the referencing recording, not the backlink itself.

###### Example JSON Response
```json
Comment thread
jeremy marked this conversation as resolved.
[
{
"id": 1069480024,
"status": "active",
"visible_to_clients": false,
"created_at": "2026-07-19T14:22:11.000Z",
"updated_at": "2026-07-19T14:22:11.000Z",
"title": "Finalize launch checklist",
"inherits_status": true,
"type": "Todo",
"url": "https://3.basecampapi.com/195539477/buckets/2085958505/todos/1069480024.json",
"app_url": "https://3.basecamp.com/195539477/buckets/2085958505/todos/1069480024",
"bookmark_url": "https://3.basecampapi.com/195539477/my/bookmarks/BAh7BkkiC19yYWlscwY6BkVUewdJIglkYXRhBjsAVEkiLmdpZDovL2JjMy9SZWNvcmRpbmcvMTA2OTQ4MDAyND9leHBpcmVzX2luBjsAVEkiCHB1cgY7AFRJIg1yZWFkYWJsZQY7AFQ=--0000000000000000000000000000000000000000.json",
"subscription_url": "https://3.basecampapi.com/195539477/buckets/2085958505/recordings/1069480024/subscription.json",
"parent": {
"id": 1069479830,
"title": "Launch",
"type": "Todolist",
"url": "https://3.basecampapi.com/195539477/buckets/2085958505/todolists/1069479830.json",
"app_url": "https://3.basecamp.com/195539477/buckets/2085958505/todolists/1069479830"
},
"bucket": {
"id": 2085958505,
"name": "The Leto Laptop",
"type": "Project"
},
"creator": {
"id": 1049715929,
"attachable_sgid": "BAh7BkkiC19yYWlscwY6BkVUewdJIglkYXRhBjsAVEkiK2dpZDovL2JjMy9QZXJzb24vMTA0OTcxNTkyOT9leHBpcmVzX2luBjsAVEkiCHB1cgY7AFRJIg9hdHRhY2hhYmxlBjsAVA==--0000000000000000000000000000000000000000",
"name": "Matt Donahue",
"personable_type": "User",
"title": "Global Data Strategist",
"tagline": null,
"location": null,
"created_at": "2026-05-28T17:22:27.821Z",
"updated_at": "2026-05-28T17:22:27.821Z",
"email_address": "matt@honchodesign.com",
"bio": null,
"admin": false,
"owner": false,
"client": false,
"employee": false,
"time_zone": "America/Chicago",
"avatar_url": "https://3.basecampapi.com/195539477/people/BAhpBNlkkT4=--0000000000000000000000000000000000000000/avatar",
"can_ping": true,
"can_manage_projects": true,
"can_manage_people": true,
"can_access_timesheet": true,
"can_access_hill_charts": true
}
}
]
```

###### Copy as cURL

```shell
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" https://3.basecampapi.com/$ACCOUNT_ID/recordings/2/backlinks.json
```

Legacy project-scoped routes
-----------------------------

The following project-scoped routes are still supported and will remain available, but flat routes above are the canonical form for new integrations.

* `GET /buckets/1/recordings/2/backlinks.json` → [Get backlinks](#get-backlinks)

[recordings]: recordings.md#recordings
14 changes: 10 additions & 4 deletions sections/card_table_cards.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ Get cards in a column
"comments_url": "https://3.basecampapi.com/195539477/buckets/2085958505/recordings/1069480041/comments.json",
"boosts_count": 0,
"boosts_url": "https://3.basecampapi.com/195539477/buckets/2085958505/recordings/1069480041/boosts.json",
"subtasks_count": 1,
"subtasks_completed_count": 0,
"subtasks_url": "https://3.basecampapi.com/195539477/recordings/1069480041/subtasks.json",
"position": 1,
"parent": {
"id": 1069479834,
Expand Down Expand Up @@ -95,7 +98,7 @@ Get cards in a column
"title": "Find inspiration",
"inherits_status": true,
"type": "Kanban::Step",
"url": "https://3.basecampapi.com/195539477/buckets/2085958505/card_tables/steps/1069480042.json",
"url": "https://3.basecampapi.com/195539477/buckets/2085958505/subtasks/1069480042.json",
"app_url": "https://3.basecamp.com/195539477/buckets/2085958505/card_tables/cards/1069480041#__recording_1069480042",
"bookmark_url": "https://3.basecampapi.com/195539477/my/bookmarks/BAh7BkkiC19yYWlscwY6BkVUewdJIglkYXRhBjsAVEkiLmdpZDovL2JjMy9SZWNvcmRpbmcvMTA2OTQ4MDA0Mj9leHBpcmVzX2luBjsAVEkiCHB1cgY7AFRJIg1yZWFkYWJsZQY7AFQ=--ac919964135c88e0b8d853cf2c2968095f8ce46a.json",
"position": 1,
Expand Down Expand Up @@ -167,7 +170,7 @@ Get cards in a column
"can_access_hill_charts": true
}
],
"completion_url": "/195539477/buckets/2085958505/steps/1069480042/completions.json"
"completion_url": "https://3.basecampapi.com/195539477/subtasks/1069480042/completion.json"
}
]
}
Expand Down Expand Up @@ -205,6 +208,9 @@ Get a card
"comments_url": "https://3.basecampapi.com/195539477/buckets/2085958505/recordings/1069480041/comments.json",
"boosts_count": 0,
"boosts_url": "https://3.basecampapi.com/195539477/buckets/2085958505/recordings/1069480041/boosts.json",
"subtasks_count": 1,
"subtasks_completed_count": 0,
"subtasks_url": "https://3.basecampapi.com/195539477/recordings/1069480041/subtasks.json",
"position": 1,
"parent": {
"id": 1069479834,
Expand Down Expand Up @@ -265,7 +271,7 @@ Get a card
"title": "Find inspiration",
"inherits_status": true,
"type": "Kanban::Step",
"url": "https://3.basecampapi.com/195539477/buckets/2085958505/card_tables/steps/1069480042.json",
"url": "https://3.basecampapi.com/195539477/buckets/2085958505/subtasks/1069480042.json",
"app_url": "https://3.basecamp.com/195539477/buckets/2085958505/card_tables/cards/1069480041#__recording_1069480042",
"bookmark_url": "https://3.basecampapi.com/195539477/my/bookmarks/BAh7BkkiC19yYWlscwY6BkVUewdJIglkYXRhBjsAVEkiLmdpZDovL2JjMy9SZWNvcmRpbmcvMTA2OTQ4MDA0Mj9leHBpcmVzX2luBjsAVEkiCHB1cgY7AFRJIg1yZWFkYWJsZQY7AFQ=--ac919964135c88e0b8d853cf2c2968095f8ce46a.json",
"position": 1,
Expand Down Expand Up @@ -337,7 +343,7 @@ Get a card
"can_access_hill_charts": true
}
],
"completion_url": "/195539477/buckets/2085958505/steps/1069480042/completions.json"
"completion_url": "https://3.basecampapi.com/195539477/subtasks/1069480042/completion.json"
}
]
}
Expand Down
12 changes: 10 additions & 2 deletions sections/card_table_steps.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
Card table steps
================

These are the card-scoped endpoints for what are now called [subtasks][subtasks]. They will
remain available indefinitely, but their paths speak of cards. The
[subtasks][subtasks] endpoints work on a step under any recording — a to-do included — and are
Comment thread
jeremy marked this conversation as resolved.
the ones to use for new integrations. Both operate on the same records and return the same
payload.
Comment thread
jeremy marked this conversation as resolved.

Available since Basecamp 5: steps are now also reachable via flat top-level paths
(`/card_tables/steps/:id.json`, `/card_tables/cards/:card_id/steps.json`, …) in addition to the
historical bucket-scoped paths shown below. Both paths return the same JSON shape and accept the
Expand All @@ -19,7 +25,8 @@ Endpoints:
Get steps in a card
--------------------

Steps are returned unpaginated as part of the [Get a card][card] endpoint payload.
The first 100 steps are returned as part of the [Get a card][card] endpoint payload. A card with
more than that reports the real total in `subtasks_count`; fetch the rest from `subtasks_url`.

Create a step
-------------------------
Expand Down Expand Up @@ -129,7 +136,7 @@ Reposition a step
**Required parameters**:

* `source_id` – the step id. Step ids can be found via the [Get a card][card] endpoint.
* `position` – Zero indexed.
* `position` – the 1-based position to move it to.

This endpoint will return `204 No Content` if successful.

Expand Down Expand Up @@ -160,3 +167,4 @@ The following project-scoped routes are still supported and will remain availabl

[card]: card_table_cards.md#get-a-card
[people]: people.md#get-all-people
[subtasks]: subtasks.md#subtasks
Loading