Skip to main content
POST
Create composite

Authorizations

X-API-Key
string
header
required

Per-manufacturer API key in the X-API-Key header, format emidat-{key_id}-{secret} where key_id is a random public handle. Issued by an owner in the Emidat dashboard; carries its own permission scopes, optional plant restrictions, and optional expiry. A revoked, expired, or unknown key returns 401. See the Authentication guide for details.

Headers

Idempotency-Key
string

Optional client-generated key of 1–255 characters (e.g. a UUID) that makes a create idempotent — the only mechanism that does so. A replay carrying the same key returns the original response unchanged (200); reusing a key with a different request body (compared byte for byte) or create endpoint is rejected with 409 err_idempotency_key_reused. Concurrent requests with the same key receive 409 err_idempotency_in_progress. Keys are scoped to your manufacturer; successful responses are retained for 6h without extending that window on replay. Current permissions are required on every retry; product-instance replays also require the original production-data scopes. Deduplication is best effort: Redis data loss can end the window early, and Redis unavailability, timeouts, or unreadable cache entries can allow creation without replay protection. Successful creates still return 201 if caching fails. Redis waits share a two-second budget excluding creation time. Incompatible replay-format upgrades reset replay protection, so retries across that boundary can create again. An interrupted create can reserve the key for up to 6h. See External IDs for recovery guidance.

Required string length: 1 - 255

Body

application/json
external_id
string | null
required

Your own code for this composite. Required; pass null if unset. A non-null code must be unique among your active composites; a duplicate returns 409 (see External IDs).

Example:

"BLENDED_CEMENT_MIX_A"

plant_id
string<uuid>
required

The plant's Emidat UUID.

name
string
required

Human-readable composite name. Must be unique among your active composites at this plant; a duplicate returns 409.

Example:

"Blended Cement Mix A"

composite_type
enum<string>
required

Composite category. Every material in the composite must belong to a material type allowed for this category.

Available options:
chemicals,
plastics,
electronics,
facing_layers,
glass,
fittings,
resins,
plastics_metal,
mechanical_composites,
glass_chemicals,
glass_carbon_reinforced_polymers,
masterbatches,
processed_plastics,
fabrics,
furniture_component
items
object[]
required

Materials that constitute this composite — at least 2, no duplicates. Percentages across all entries must sum to exactly 100. Every material must be allowed for the composite_type.

Minimum array length: 2

Response

Returned unchanged — an Idempotency-Key replay.

id
string<uuid>
required

Emidat-assigned composite UUID.

external_id
string | null
required

Your own code for this composite, null when none is set. Supplier products reference the composite by its Emidat id; BOM entries reference those supplier products, not the composite directly.

Example:

"BLENDED_CEMENT_MIX_A"

plant_id
string<uuid>
required

The plant's Emidat UUID.

name
string
required

Human-readable composite name.

Example:

"Blended Cement Mix A"

composite_type
enum<string>
required

Composite category. Every material in the composite must belong to a material type allowed for this category.

Available options:
chemicals,
plastics,
electronics,
facing_layers,
glass,
fittings,
resins,
plastics_metal,
mechanical_composites,
glass_chemicals,
glass_carbon_reinforced_polymers,
masterbatches,
processed_plastics,
fabrics,
furniture_component
items
object[]
required

Ingredients constituting this composite, with percentages summing to 100.

created_at
string<date-time>
required