Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/cryguy/hashboard/llms.txt

Use this file to discover all available pages before exploring further.

Columns belong to boards and hold cards in an ordered, named list. You create columns through the board endpoint (POST /api/v1/boards/{id}/columns — documented on the Boards page); the routes here cover everything that happens to a column after creation: renaming, reordering, and archiving. Positions are maintained with fractional-index text keys (lexicographic, Figma-style): a single pos field on the column row is all that needs updating on a reorder, regardless of how many other columns exist. The move endpoint takes neighbor IDs rather than raw positions, so callers never have to generate or read position keys directly. All write operations require the caller to be in the board creator’s household. Archiving a column is board-creator-only.

PATCH /api/v1/columns/{id}

Rename a column. The name field is the only mutable property on a column outside of position and archive state. PATCH /api/v1/columns/{id}

Path Parameters

id
string
required
Column ID.

Request Body

name
string
required
New display name for the column.

Response

Returns the updated Column object.
id
string
Column UUID.
boardId
string
Parent board ID.
name
string
Updated display name.
pos
string
Fractional-index position key (lexicographic). Reflects the column’s current order among its siblings.
createdAt
string
ISO 8601 creation timestamp.
archivedAt
string | null
ISO 8601 timestamp when the column was archived, or null if it is live.
curl -X PATCH \
  -H "Authorization: Bearer hb_…" \
  -H "Content-Type: application/json" \
  -d '{"name": "Done ✓"}' \
  https://your-instance.example/api/v1/columns/018f2e3b-…

POST /api/v1/columns/{id}/move

Reorder a column by placing it between two neighbor columns. The server computes the new fractional-index position from the neighbors’ current positions — you never read or write pos values directly. POST /api/v1/columns/{id}/move

Path Parameters

id
string
required
ID of the column to move.

Request Body

prevId
string | null
ID of the column that should be immediately before this one after the move. Pass null (or omit) to indicate there is no predecessor (i.e. move to the start).
nextId
string | null
ID of the column that should be immediately after this one. Pass null (or omit) to indicate there is no successor (i.e. move to the end).

Response

Returns the updated Column object with the new pos value.
Ordering semantics: prevId and nextId are the IDs of the column’s intended neighbors in the final order — fetch the current column list first to resolve them. Pass both as null (or omit both) to append the column at the end of its board.The two IDs must belong to the same board as the column being moved. Out-of-board or non-existent IDs return 400.
# Fetch the board's columns to find the target neighbors
curl -H "Authorization: Bearer hb_…" \
  https://your-instance.example/api/v1/boards/018f2e3a-…/columns

# Move column C to sit between column A and column B
curl -X POST \
  -H "Authorization: Bearer hb_…" \
  -H "Content-Type: application/json" \
  -d '{"prevId": "col-a-id", "nextId": "col-b-id"}' \
  https://your-instance.example/api/v1/columns/col-c-id/move

# Append to the end (no neighbors)
curl -X POST \
  -H "Authorization: Bearer hb_…" \
  -H "Content-Type: application/json" \
  -d '{"prevId": null, "nextId": null}' \
  https://your-instance.example/api/v1/columns/col-c-id/move

POST /api/v1/columns/{id}/archive

Archive a column. Board-creator-only. Archived columns (and any cards inside them) are excluded from the default board view but remain accessible via GET /api/v1/boards/{boardId}/archived. The column can be restored with the unarchive action below. POST /api/v1/columns/{id}/archive

Path Parameters

id
string
required
Column ID.

Response

Returns the updated Column object with archivedAt set to the current timestamp.
curl -X POST \
  -H "Authorization: Bearer hb_…" \
  https://your-instance.example/api/v1/columns/018f2e3b-…/archive

POST /api/v1/columns/{id}/unarchive

Restore an archived column to active status. Board-creator-only. Cards inside the column remain in their individual archived/unarchived state — unarchiving the column does not bulk-unarchive its cards. POST /api/v1/columns/{id}/unarchive

Path Parameters

id
string
required
Column ID.

Response

Returns the updated Column object with archivedAt set to null.
curl -X POST \
  -H "Authorization: Bearer hb_…" \
  https://your-instance.example/api/v1/columns/018f2e3b-…/unarchive

Creating columns

Columns are created through the board endpoint, not through a standalone POST /api/v1/columns route. New columns are always appended at the end; use POST /api/v1/columns/{id}/move immediately after creation if a different position is needed.
# Create a column named "Backlog" on a board
curl -X POST \
  -H "Authorization: Bearer hb_…" \
  -H "Content-Type: application/json" \
  -d '{"name": "Backlog"}' \
  https://your-instance.example/api/v1/boards/018f2e3a-…/columns
See POST /api/v1/boards/{id}/columns for the full reference.

Reorder workflow

A typical drag-and-drop reorder involves three steps:
1

Fetch the current column order

GET /api/v1/boards/{boardId}/columns
Note the IDs of the neighbors the column should end up between.
2

Call the move endpoint

POST /api/v1/columns/{id}/move
{ "prevId": "<left-neighbor-id>", "nextId": "<right-neighbor-id>" }
Pass null for prevId to move to the first position, or null for nextId to move to the last.
3

Update local state

The response column carries the new pos value. Re-sort your local list by pos (lexicographic string sort) to reflect the change without a full re-fetch.

Build docs developers (and LLMs) love