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

# Working with Molecule Schemas

Reading schemas and core schema CRUD are GA, with no header. A schema also decides a molecule's salt-form role; see the [concept model](/docs/introduction-to-chemistry#concept-model).

## Discovering a schema

To [create a molecule](/docs/working-with-molecules#creating-a-molecule) against a schema, you need its `schemaId` and the names of the fields it defines.

| Operation                         | Endpoint                                                            | Stability |
| --------------------------------- | ------------------------------------------------------------------- | --------- |
| List schemas                      | `GET /molecule-schema/items`                                        | GA        |
| Get one                           | `GET /molecule-schema/{molecule_schema_id}`                         | GA        |
| List a schema's field definitions | `GET /molecule-schema/{molecule_schema_id}/field-definitions/items` | Beta      |

* Take the `schemaId` from the list or get response, and pass it as `schemaId` on molecule create.
* The field-definition listing tells you the field **names** and types to populate in `schemaFields`.

## Filtering molecules by schema

To find molecules of a given schema, filter `GET /molecule/items` with `schema.eq=<id>` (one schema) or `schema.anyOf=<id1>,<id2>,...` (up to 100). Use only one `schema` filter argument at a time.