Create product
Creates the base record and its standard variant.
Use this endpoint to create the base record, not a marketplace offer. It does not call a Connection and does not publish anything. The response contains the Product; in the same transaction the API creates a standard Variant with options: {}, no SKU, and inventoryAuthority: "disabled".
Put only reusable data here: localized content, canonical identity (brand, model, identifiers), typed attributes, physical data (physical: item and package weight in grams and dimensions in millimeters, as integers), fiscal and compliance declarations, media, and your application's metadata. Price, commercial terms, and channel-specific copy belong to a Listing; color, storage, SKU, and GTIN specific to a combination belong to a Variant.
Each attribute states its value type, for example { "key": "material", "value": { "type": "text", "text": "aluminum" } }. Use UCUM units for measurable values, such as g, cm, or V. In physical, weightInGrams and dimensionsInMm describe the item; packageWeightInGrams, packageDimensionsInMm, and packageQuantity describe what ships.
Example decision: create iPhone 16 once as a Product. Then turn its standard Variant into a simple sellable unit or create black/128 GB and white/128 GB Variants. Only then create an offer on Mercado Livre, Amazon, or another channel.
Use Idempotency-Key when retrying a creation after a network failure. Reusing the same key prevents a duplicate Product and standard Variant.
api_keyAuthorizationBearer <token>API key (mk_...)
sellerId*stringSeller the new resource belongs to.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidIdempotency-Key?stringOptional. A unique value (for example a UUID), 1 to 255 characters, that makes the request safe to retry: repeating it with the same body within 24h returns the original response with Idempotency-Replayed: true instead of running the operation again. Scoped to your account. Reusing it with a different body returns 409.
1 <= length <= 255application/json- body
Fields used to create the reusable product base.
content*Reusable product content. A listing may inherit or override it.
identity?Canonical product identity fields and typed identifiers.
{}attributes?array<>Typed canonical product attributes.
items <= 200physical?Product-level dimensions, weight and package quantity.
fiscal?Brazilian fiscal product data.
{}compliance?Safety and regulatory compliance declarations.
{ "certifications": [], "warnings": []}metadata?Customer-owned metadata that MarketAPI does not interpret.
{}media?array<>Ordered references to product media assets.
items <= 100[]The created product.
application/json- response
A reusable product base, independent of marketplace listings.
id*stringProduct identifier.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidsellerId*stringSeller that owns this product.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidstatus*stringLifecycle state of the product.
"active""archived"content*Reusable product content.
identity*Reusable identity fields.
attributes*array<>Typed product attributes.
items <= 200physical*|Product-level physical data, if any.
fiscal*Brazilian fiscal product data.
compliance*Safety and regulatory compliance declarations.
metadata*Customer-owned product metadata.
media*array<>Ordered product media.
createdAt*stringWhen the product was created.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$date-timeupdatedAt*stringWhen the product was last changed.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$date-timecurl -X POST "https://example.com/v1/sellers/b6a1c0de-3f0c-4f53-9c6e-2a1d7d3b9e10/products" \ -H "Content-Type: application/json" \ -d '{ "content": { "title": { "pt-BR": "iPhone 16" } }, "identity": { "brand": "Apple", "model": "iPhone 16" } }'{ "id": "a0f0ce59-5d17-49bf-8b45-d1dc057daab4", "sellerId": "3d1c8a52-7f0e-4b0a-8a65-9c1b2f6d7e01", "status": "active", "content": { "title": { "pt-BR": "iPhone 16" } }, "identity": { "brand": "Apple", "model": "iPhone 16" }, "attributes": [], "physical": null, "fiscal": {}, "compliance": { "certifications": [], "warnings": [] }, "metadata": {}, "media": [], "createdAt": "2026-10-10T12:00:00.000Z", "updatedAt": "2026-10-10T12:00:00.000Z"}