# Ideas (/en/api/ide)

The ideas board is per [profile](/en/api/profile): requests use the profile of the API key or the `Tebar-Profile` header (with neither: the default profile). The feature itself is explained on the [Ideas](/en/ide) page.

## Reading the board [#reading-the-board]

```txt
GET /v1/ideas/board
GET /v1/ideas/{id}
```

`/ideas/board` returns every column in order, each with its cards in order. A profile's first board gets the columns Ide, Dikerjakan, and Siap automatically (Ideas, In progress, and Ready when the account language is English). Card text is cut at 280 characters (`truncated: true`); `/ideas/{id}` gives the full text.

Each idea has `id`, `column_id`, `text`, `media` (in order), `used_in_posts` (how many posts were made from it), `created_at`, and `updated_at`.

## Adding and changing ideas [#adding-and-changing-ideas]

```txt
POST   /v1/ideas         { "text": "...", "media_ids": ["..."], "column_id": "..." }
PATCH  /v1/ideas/{id}    { "text"?, "media_ids"?, "column_id"?, "before_id"? | "after_id"? }
DELETE /v1/ideas/{id}
```

- A new idea needs text or media. Without `column_id`, it goes to the first column. New ideas always go to the top of the column.
- Media must be `ready` and come from the same profile. Otherwise the API answers `media_profile_mismatch` or `media_not_ready`.
- To move an idea, name its neighbor: `before_id` (right before that idea) or `after_id` (right after it). You never compute positions yourself. `column_id` without a neighbor puts the idea at the top of that column.
- A profile can hold up to 1,000 ideas (`422 idea_limit`).

## Columns [#columns]

```txt
POST   /v1/idea-columns         { "name": "Next week" }
PATCH  /v1/idea-columns/{id}    { "name"?, "before_id"? | "after_id"? }
DELETE /v1/idea-columns/{id}?move_to={target column}
```

New columns go to the far right. A profile can have up to 20 columns (`422 idea_column_limit`). A column that still holds ideas can only be deleted when `move_to` is sent (`409 column_not_empty`). The last column cannot be deleted (`409 last_column`).

## Posts from an idea [#posts-from-an-idea]

Send `idea_id` when [creating a post](/en/api/posts):

```json
{ "content": "...", "idea_id": "…", "targets": [{ "account_id": "…" }] }
```

The idea must be in the same profile as the post's target accounts (`404 idea_not_found`). The post stores `idea_id`, and the idea's `used_in_posts` goes up. The idea stays on the board after it is posted. If the idea is deleted, the post's `idea_id` becomes `null`.
