> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

# Create a Feature Library

POST https://{tenant_name}.benchling.com/api/v2/feature-libraries
Content-Type: application/json

Create a Feature Library

Reference: https://docs.benchling.com/docs/api/v2/benchling-api/feature-libraries/create-feature-library

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Body (application/json)

This endpoint expects a FeatureLibraryCreate.

- `description` (string, optional) — The description for the feature library
- `name` (string, optional) — The name of the feature library
- `organizationId` (string, optional) — The organization that will own the feature library. The requesting user must be an administrator of the organization. If unspecified and the organization allows personal ownables, then the requesting user will own the feature library

## Response

### 201

Created

- `description` (string, optional) — The description for the feature library
- `name` (string, optional) — The name of the feature library
- `createdAt` (datetime, optional) — DateTime the Feature Library was created
- `id` (string, optional) — The id of the feature library
- `modifiedAt` (datetime, optional) — DateTime the Feature Library was last modified
- `owner` (FeatureLibraryOwner, optional)
- `webURL` (string, optional) — The Benchling web UI url to view the Feature Library

## Errors

### 400 Bad Request Error

Bad Request

- `error` (BadRequestErrorError, optional)

## Types

### FeatureLibraryOwner

### BadRequestErrorError

- `message` (string, optional)
- `type` (enum, optional)
  - Allowed values: `invalid_request_error`
- `userMessage` (string, optional)

### Organization

- `handle` (string, optional)
- `id` (string, optional)
- `name` (string, optional)

### UserSummary

- `handle` (string, optional)
- `id` (string, optional)
- `name` (string, optional)

## Examples

**Request**

```json
{
  "description": "string",
  "name": "string"
}
```

**Response**

```json
{
  "description": "string",
  "name": "string",
  "createdAt": "2024-01-15T09:30:00Z",
  "id": "featlib_6ZVdX98t",
  "modifiedAt": "2024-01-15T09:30:00Z",
  "owner": {
    "handle": "string",
    "id": "string",
    "name": "string"
  },
  "webURL": "string"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v2/feature-libraries"

payload = {
    "description": "string",
    "name": "string"
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v2/feature-libraries';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"description":"string","name":"string"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```