# Emidat API - [Introduction](https://docs.emidat.com/introduction.md) - [Authentication](https://docs.emidat.com/authentication.md) - [Errors](https://docs.emidat.com/errors.md) - [External IDs](https://docs.emidat.com/external-ids.md) - [Pagination](https://docs.emidat.com/pagination.md) - [Using AI Agents](https://docs.emidat.com/using-ai-agents.md) - [Introspect API key](https://docs.emidat.com/api-reference/me/get.md): Reports what the calling key can do right now: the manufacturer it belongs to, the scopes it can exercise, and the plants it can reach. Call it once after wiring up a new key to confirm the setup, and whenever a `403` needs explaining. - [List plants](https://docs.emidat.com/api-reference/plants/list.md): Lists the plants your key can access. Plants are created and managed on the Emidat UI, not via the API — listing them is how your integration maps your own plant codes to the Emidat `plant_id` it references. - [Get plant](https://docs.emidat.com/api-reference/plants/get.md): Fetches one plant by its Emidat UUID. `404` if no active plant carries the id; `403` if the plant exists but the key's plant restriction does not include it. - [List production processes](https://docs.emidat.com/api-reference/production-processes/list.md): Lists the production processes at the plants your key can access. Production processes are created and managed on the Emidat UI, not via the API — listing them is how your integration maps your own process codes to the Emidat `production_process_id` it references. - [Get production process](https://docs.emidat.com/api-reference/production-processes/get.md): Fetches one production process by its Emidat UUID. `404` if no active production process carries the id; `403` if it exists but belongs to a plant outside the key's plant restriction. - [List product instances](https://docs.emidat.com/api-reference/product-instances/list.md): Lists the product instances at the plants your key can access. - [Create product instance](https://docs.emidat.com/api-reference/product-instances/create.md): **Idempotent create** — a replay of the same `Idempotency-Key` returns the original response (`200`); otherwise a new product instance is created (`201`). Your `external_id` must be unique: reusing one returns `409`. See [External IDs](/external-ids). - [Get product instance](https://docs.emidat.com/api-reference/product-instances/get.md) - [Update product instance](https://docs.emidat.com/api-reference/product-instances/update.md): Full replacement of editable fields. Immutable `plant_id`, `elementary_id`, and `unit` may be omitted or echoed from the current resource. `external_id` is replaced: re-sending this instance's own code succeeds unchanged, while a code held by another active instance returns `409`. See [External IDs]… - [Delete product instance](https://docs.emidat.com/api-reference/product-instances/delete.md): Deletes an instance nothing else consumes. An instance another product draws on as a prechain product returns `409 Conflict` with `err_product_instance_in_recipe` — remove those BOM entries first. - [Get BOM](https://docs.emidat.com/api-reference/product-instances/get-bom.md): Returns the instance's current BOM — the full set of components last written. - [Replace BOM](https://docs.emidat.com/api-reference/product-instances/bom.md): Replaces the instance's entire BOM. Re-sending the same components is a no-op (idempotent). - [Recompute LCA](https://docs.emidat.com/api-reference/product-instances/lca-update.md): Queues a recompute of this instance's LCA, filling in any sub-assembly results it consumes that are missing. Call once on the root after all writes. - [Get LCA results](https://docs.emidat.com/api-reference/product-instances/lca-results.md): Returns the computed LCA for the instance, one entry per reportable production year — see `LcaResults.results` for which years those are, and why an instance can legitimately have none. The instance is modelled with the default scenario for its material type, not with the scenario of any catalog pro… - [List prechain products](https://docs.emidat.com/api-reference/prechain-products/list.md): Lists the prechain products at the plants your key can access — the product instances you registered as upstream inputs. Paginated — see [Pagination](/pagination). - [Create prechain product](https://docs.emidat.com/api-reference/prechain-products/create.md): Registers an existing product instance as an upstream ("prechain") input at one of your plants, with an optional transport route. - [Get prechain product](https://docs.emidat.com/api-reference/prechain-products/get.md): Returns the prechain product with its per-kg impacts. - [Update prechain product](https://docs.emidat.com/api-reference/prechain-products/update.md): Full replacement of editable fields. Send `external_id` and `transport_route`; immutable references may be omitted or echoed from the current resource, but cannot be changed. Returns the prechain product with recomputed per-kg impacts. - [Delete prechain product](https://docs.emidat.com/api-reference/prechain-products/delete.md): Deletes a prechain product. Returns `409 Conflict` if it is referenced in the BOM of an active product instance — `err_prechain_product_in_recipe`; remove those BOM entries first. - [List supplier companies](https://docs.emidat.com/api-reference/supplier-companies/list.md): Lists supplier companies across the plants accessible to this API key. Pass `plant_id` to restrict the results to one plant. - [Create supplier company](https://docs.emidat.com/api-reference/supplier-companies/create.md): Creates a supplier company at the given plant — the organization a supplier plant belongs to. - [Get supplier company](https://docs.emidat.com/api-reference/supplier-companies/get.md) - [Update supplier company](https://docs.emidat.com/api-reference/supplier-companies/update.md): Full replacement of editable fields. `plant_id` is an optional assertion of the supplier company's immutable parent plant. It may be omitted or echoed. `external_id` is replaced: re-sending this company's own code succeeds unchanged, while a code held by another active supplier company returns `409`… - [Delete supplier company](https://docs.emidat.com/api-reference/supplier-companies/delete.md): Deletes a supplier company. - [List supplier plants](https://docs.emidat.com/api-reference/supplier-plants/list.md): Lists your supplier plants. Pass `plant_id` to restrict the results to suppliers of one of your plants, or `supplier_company_id` to restrict them to one supplier company. - [Create supplier plant](https://docs.emidat.com/api-reference/supplier-plants/create.md): The returned `id` is used as `supplier_plant_id` when creating supplier products. - [Get supplier plant](https://docs.emidat.com/api-reference/supplier-plants/get.md) - [Update supplier plant](https://docs.emidat.com/api-reference/supplier-plants/update.md): Full replacement of editable fields. `supplier_company_id` is an optional assertion of the plant's immutable parent supplier company. It may be omitted or echoed. `external_id` is replaced: re-sending this plant's own code succeeds unchanged, while a code held by another active supplier plant return… - [Delete supplier plant](https://docs.emidat.com/api-reference/supplier-plants/delete.md): Deletes a supplier plant. Returns `409 Conflict` while any active supplier product is still sourced from it. - [List supplier products](https://docs.emidat.com/api-reference/supplier-products/list.md): Lists the supplier products at the plants your key can access. Pass `plant_id` to restrict the results to one plant, or `supplier_plant_id` to list everything sourced from one supplier plant. - [Create supplier product](https://docs.emidat.com/api-reference/supplier-products/create.md): Creates a supplier product referencing an existing supplier plant by UUID. The authenticated manufacturer is inferred from the API key. LCA impact data is sourced from the linked `epd_id` (if provided) or from Emidat's background datasets behind `material_type` — the `elementary_id` for an `emidat-e… - [Get supplier product](https://docs.emidat.com/api-reference/supplier-products/get.md) - [Update supplier product](https://docs.emidat.com/api-reference/supplier-products/update.md): Full replacement of editable fields. Immutable `plant_id` and `material_type` may be omitted or echoed from the current resource. `external_id` is replaced: re-sending this product's own code succeeds unchanged, while a code held by another active supplier product returns `409`. See [External IDs](/… - [Delete supplier product](https://docs.emidat.com/api-reference/supplier-products/delete.md): Deletes a supplier product. Returns `409 Conflict` if the supplier product is part of an active silo (`err_supplier_product_in_silo`) or referenced in an active product's BOM (`err_supplier_product_in_recipe`). - [List silos](https://docs.emidat.com/api-reference/silos/list.md): Lists the silos at the plants your key can access. Pass `plant_id` to restrict the results to one plant. - [Create silo](https://docs.emidat.com/api-reference/silos/create.md): Creates a silo at one of your plants. A silo holds same-type supplier products from one or more suppliers; a BOM can reference the silo instead of individual supplier products by using `type: silo`. - [Get silo](https://docs.emidat.com/api-reference/silos/get.md) - [Update silo](https://docs.emidat.com/api-reference/silos/update.md): Full replacement of editable fields. Immutable `plant_id` may be omitted or echoed from the current resource. `external_id` is replaced: re-sending this silo's own code succeeds unchanged, while a code held by another active silo returns `409`. See [External IDs](/external-ids). - [Delete silo](https://docs.emidat.com/api-reference/silos/delete.md): Deletes a silo. Returns `409 Conflict` if the silo is currently referenced in the BOM of any product instance. - [List composites](https://docs.emidat.com/api-reference/composites/list.md): Lists the composites at the plants your key can access. Pass `plant_id` to restrict the results to one plant. - [Create composite](https://docs.emidat.com/api-reference/composites/create.md): Creates a composite at one of your plants. A composite is a manufacturer-defined mix of materials by percentage. - [Get composite](https://docs.emidat.com/api-reference/composites/get.md) - [Update composite](https://docs.emidat.com/api-reference/composites/update.md): Full replacement of editable fields. `external_id` is replaced: re-sending this composite's own code succeeds unchanged, while a code held by another active composite returns `409`. See [External IDs](/external-ids). - [Delete composite](https://docs.emidat.com/api-reference/composites/delete.md): Deletes a composite. Returns `409 Conflict` if the composite is currently referenced by any active supply material. ## OpenAPI Specs - [openapi](/openapi.yaml)