> 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.

# Get Mixture by ID

GET https://{tenant_name}.benchling.com/api/v3/mixture/{mixture_id}

Get a single Mixture by ID.

Reference: https://docs.benchling.com/docs/api/benchling-api/mixture/get

## Authentication

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

## Request

### Path parameters

- `mixture_id` (string, required) — ID of the Mixture.

### Query parameters

- `returning` (string, optional) — Comma-separated list of top-level fields to include in each returned item. Cannot overlap with omit.
- `omit` (string, optional) — Comma-separated list of top-level fields to omit from each returned item. Cannot overlap with returning.

### Headers

- `EARLY-ACCESS` (string, optional) — Set to true to access beta operations via /api/v3.

## Response

### 200

OK

- `__typename` (string, optional)
- `authors` (string, optional, nullable)
- `creator` (PrincipalRef, optional, nullable)
- `aliases` (list of string, optional, nullable)
- `allowMeasuredIngredients` (boolean, optional, nullable) — Derived from the mixture's schema.
- `amount` (string, optional, nullable) — The positive numerical amount value of this mixture in string format (to preserve full precision). Pair with `units`. Supports scientific notation (1.23e4).
- `archiveReason` (string, optional, nullable)
- `archived` (boolean, optional)
- `createdAt` (string, optional, nullable)
- `customFields` (list of CustomField, optional, nullable)
- `entityRegistryId` (string, optional, nullable) — The registry-assigned identifier for this item (e.g. its registry ID shown in the UI), present only once the item has been registered. Null if the item is not registered.
- `folder` (FolderRef, optional, nullable)
- `id` (string, optional)
- `ingredients` (list of Ingredient, optional, nullable) — List of ingredients on this mixture.
- `modifiedAt` (string, optional, nullable)
- `name` (string, optional, nullable) — Name of the item.
- `project` (ProjectRef, optional, nullable)
- `registrationOrigin` (RegistrationOrigin, optional, nullable) — Provenance of this item's registration — where and when it was registered. Null if unregistered.
- `registry` (RegistryRef, optional, nullable) — The Registry this item belongs to, if registered. Null if unregistered.
- `schema` (EntitySchemaRef, optional, nullable) — Use typedSchema instead, which returns the per-type schema.
- `typedSchema` (MixtureSchemaRef, optional, nullable)
- `units` (enum, optional, nullable)
  - Allowed values: `NL`, `UL`, `ML`, `L`, `G`, `KG`, `UNITS`, `UG`, `MG`

## Errors

### 400 Mixture Get Request Bad Request Error

Bad Request

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 403 Mixture Get Request Forbidden Error

Forbidden

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 404 Mixture Get Request Not Found Error

Not Found

- `detail` (GeneralErrorDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)

### 429 Mixture Get Request Too Many Requests Error

Too Many Requests

- `detail` (TooManyRequestsErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `invalidId` (string, optional)
- `violated-policies` (list of enum, optional) — The budget policies that rejected the request, in canonical order: `user`, `integration`, then `tenant`.
  - Allowed values: `user`, `integration`, `tenant`

### 500 Mixture Get Request Internal Server Error

Internal Server Error

- `detail` (InternalServerErrorBodyDetail, required, nullable)
- `instance` (string, required)
- `status` (integer, required)
- `title` (string, required, nullable)
- `type` (string, required)
- `errorId` (string, optional)

## Types

### PrincipalRef

- `__typename` (string, optional)
- `id` (string, optional)

### CustomField

A name-value pair for storing additional metadata on objects that support custom fields. CustomFields provide a flexible way to attach arbitrary string data to entities, containers, datasets, and other Benchling objects without modifying their schemas. Objects that can have custom fields implement the HasCustomFields interface. Unlike schema-defined fields, custom fields are not validated against a schema and can be freely added or modified.

- `__typename` (string, optional)
- `name` (string, optional, nullable)
- `value` (string, optional, nullable)

### FolderRef

- `__typename` (string, optional)
- `id` (string, optional)

### Ingredient

Represents a single component within a Mixture, specifying the substance and its amount. Each Ingredient references a componentEntity (the substance being added), an amount with units (see IngredientMeasurementUnits), and optional lot tracking information. The amount can be a numeric value or "QS" (quantum satis, meaning "as much as is needed") for one ingredient per mixture. Ingredients may optionally track component lots either as Container references (for physical inventory tracking) or as text. The targetAmount field is used when a mixture is derived from a parent mixture and indicates the proportional amount needed.

- `__typename` (string, optional)
- `amount` (string, optional, nullable) — The amount value of this ingredient in its mixture, in string format (to preserve full precision). Pair with `units`. Supports scientific notation (1.23e4). One ingredient on this mixture can have an amount value of `"QS"`.
- `catalogIdentifier` (string, optional, nullable)
- `componentEntity` (EntityRef, optional, nullable)
- `componentLotContainer` (ContainerRef, optional, nullable) — The container representing the component lot for this ingredient. This is only present if the mixture schema supports component lots in "storage" format.
- `componentLotEntity` (EntityRef, optional, nullable) — The entity representing the component lot for this ingredient. This is only present if the mixture schema supports component lots in "storage" format.
- `componentLotText` (string, optional, nullable) — Text representing the component lot for this ingredient. This is only present if the mixture schema supports component lots in "text" format.
- `hasParent` (boolean, optional, nullable)
- `notes` (string, optional, nullable)
- `targetAmount` (string, optional, nullable) — The target amount for this ingredient such that this ingredient's proportion in its mixture would preserve the equivalent ingredient's proportion in the parent mixture. Pair with `units`.
- `units` (enum, optional, nullable)
  - Allowed values: `NL`, `UL`, `ML`, `L`, `MG`, `G`, `UNITS`, `CELLS`, `KG`, `MOL`, `UMOL`, `MMOL`, `UG`

### ProjectRef

- `__typename` (string, optional)
- `id` (string, optional)

### RegistrationOrigin

Captures the provenance of an entity's registration into the registry. The `originEntry` links to the `DocumentLike` (typically an entry or notebook) from which the entity was registered, providing traceability back to the original experimental context. The `registeredAt` timestamp records when the registration occurred. This information helps scientists understand where registered entities came from and when they were added to the registry.

- `__typename` (string, optional)
- `originEntry` (DocumentLikeRef, optional, nullable)
- `registeredAt` (string, optional, nullable)

### RegistryRef

- `__typename` (string, optional)
- `id` (string, optional)

### EntitySchemaRef

- `__typename` (string, optional)
- `id` (string, optional)

### MixtureSchemaRef

- `__typename` (string, optional)
- `id` (string, optional)

### GeneralErrorDetail

### TooManyRequestsErrorBodyDetail

### InternalServerErrorBodyDetail

### EntityRef

- `__typename` (string, optional)
- `id` (string, optional)

### ContainerRef

- `__typename` (string, optional)
- `id` (string, optional)

### DocumentLikeRef

- `__typename` (string, optional)
- `id` (string, optional)

## Examples

**Response**

```json
{
  "__typename": "__typename",
  "authors": "authors",
  "creator": {
    "__typename": "__typename",
    "id": "id"
  },
  "aliases": [
    "aliases"
  ],
  "allowMeasuredIngredients": true,
  "amount": "amount",
  "archiveReason": "archiveReason",
  "archived": true,
  "createdAt": "createdAt",
  "customFields": [
    {
      "__typename": "__typename",
      "name": "name",
      "value": "value"
    }
  ],
  "entityRegistryId": "entityRegistryId",
  "folder": {
    "__typename": "__typename",
    "id": "id"
  },
  "id": "id",
  "ingredients": [
    {
      "__typename": "__typename",
      "amount": "amount",
      "catalogIdentifier": "catalogIdentifier",
      "componentLotText": "componentLotText",
      "hasParent": true,
      "notes": "notes",
      "targetAmount": "targetAmount",
      "units": "NL"
    }
  ],
  "modifiedAt": "modifiedAt",
  "name": "name",
  "project": {
    "__typename": "__typename",
    "id": "id"
  },
  "registrationOrigin": {
    "__typename": "__typename",
    "originEntry": {
      "__typename": "__typename",
      "id": "id"
    },
    "registeredAt": "registeredAt"
  },
  "registry": {
    "__typename": "__typename",
    "id": "id"
  },
  "schema": {
    "__typename": "__typename",
    "id": "id"
  },
  "typedSchema": {
    "__typename": "__typename",
    "id": "id"
  },
  "units": "NL"
}
```

**SDK Code**

```python
import requests

url = "https://{tenant_name}.benchling.com/api/v3/mixture/mixture_id"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://{tenant_name}.benchling.com/api/v3/mixture/mixture_id';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

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