---
title: "Create a collection"
method: POST
path: "/library/collections"
tags: ["Library"]
---

# Create a collection

`POST /library/collections`

## Request

- Base URL: `https://elicit.com/api/v2`
- URL: `https://elicit.com/api/v2/library/collections`
- Auth: HTTP bearer

Creates an empty collection. Names are not unique. Store the returned id.

### Example

```bash
curl -X POST https://elicit.com/api/v2/library/collections \
  -H "Authorization: Bearer elk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"name":"GLP-1 cardiovascular trials"}'
```

## Request body

- object
  - `name` string, required
  - `description` string

## Response `201`

The new collection.

- LibraryCollection
  - `id` string, uuid, required
  - `name` string, required
  - `description` string, required
  - `role` 'owner' | 'writer' | 'reader', required: Your access level. A reader can view the collection. A writer can also add and remove sources and edit the name and description. An owner can also delete the collection and change who it is shared with.
  - `kind` 'personal' | 'group', required: `personal`: never shared; lists your own sources. `group`: has been shared at least once; owns copies of its sources, and stays a group collection.
  - `sharedVia` 'direct' | 'organization': `direct` if the owner shared the collection with you. `organization` if the owner shared it with your organization. Absent on your own collections.
  - `sourceCount` integer, required
  - `links` object, required
    - `self` string, required: API URL of this collection.
    - `sources` string, required: URL listing the sources in this collection.

## Other responses

- `400`: A malformed id, or an unknown or invalid query parameter.
- `401`: Authentication failed. The API key is missing, invalid, revoked, or expired.
- `403`: API access is not available on your current plan. Upgrade to Pro or above to use the API.
- `429`: Rate limit exceeded. More than 100 requests per minute were received from your IP address; further requests are blocked for 5 minutes.
- `500`: An unexpected error occurred. Retry reads with backoff; before retrying a write, check whether it took effect. See Error Handling for retry guidance.

## Changes

- **2026-10-13** `27c80b9a3470`: 4 info
  - added the optional property `error/details` to the response with the `400` status
  - added the optional property `error/details` to the response with the `401` status
  - added the optional property `error/details` to the response with the `403` status
  - added the optional property `error/details` to the response with the `500` status
- **2026-09-27** `9b5b75b828ab`: 4 info
  - added the optional property `error/sessionId` to the response with the `400` status
  - added the optional property `error/sessionId` to the response with the `401` status
  - added the optional property `error/sessionId` to the response with the `403` status
  - added the optional property `error/sessionId` to the response with the `500` status
- **2026-09-15** `69b6844982c1`: 1 warning, 2 info
  - added the new `writer` enum value to the `role` response property for the response status `201`
  - added the optional property `sharedVia` to the response with the `201` status
  - added the required property `kind` to the response with the `201` status
- **2026-09-11** `acdbab329322`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elicit/apis/elicit-api/changes/library/collections/post.md)

---

[API](https://skmtc.dev/elicit/apis/elicit-api.md) - [All operations](https://skmtc.dev/elicit/apis/elicit-api/llms.txt) - [OpenAPI document](https://skmtc.dev/elicit/apis/elicit-api/revisions/78db836edb9c?raw)
