Market catalog --- external read API

Zuletzt aktualisiert: Apr 5, 2026Abschnitt: General

Market catalog --- external read API

Full API reference: https://api.mailoo.app/docs/v1

Use a Market integration to manage a minimal product catalog in the Mailoo dashboard and expose read-only JSON to your storefront or BFF. Every external route requires ``X-API-Key``; there is no anonymous access.

Overview

  • Auth: Header ``X-API-Key`` on every request.
  • Scope: RESTRICTED keys need ``market.external-read`` in allowedOperations (FULL keys also work).
  • Routing: GET {baseUrl}/api/v1/market/{projectUid}/integrations/{integrationId}/… --- same path shape as dashboard resources under /projects/{uid}/integrations/{id}/market/…, without the projects prefix.
  • Ownership: The API key must belong to the project owner; projectUid and integrationId must refer to an ACTIVE integration of type MARKET.
  • Visibility: Products do not have a separate "published" flag in the API --- external list/detail returns the same catalog the dashboard shows for that integration.

Tag icons: Tag objects may include iconMediaId. To fetch image bytes, use the Images integration with a key that allows ``image.external-read`` (see images{.interpreted-text role="doc"}).

BFF environment variables

Align with the Connection panel on the integration page (same names as below). Typical server-side variables:

  • MAILOO_MARKET_API --- API base URL (e.g. https://api.mailoo.app or your dev host), no trailing slash.
  • MAILOO_MARKET_API_KEY --- API key with ``market.external-read`` (or FULL).
  • MAILOO_MARKET_PROJECT_UID --- Project UID.
  • MAILOO_MARKET_INTEGRATION_ID --- Market integration id (CUID).

Endpoints (all GET, all require X-API-Key)

Replace {baseUrl}, {projectUid}, {integrationId}, and path parameters as needed.

  • GET {baseUrl}/api/v1/market/{projectUid}/integrations/{integrationId}/types --- Product types and attributes.
  • GET …/products --- All products (with variants and tag links).
  • GET …/products/{productId} --- One product.
  • GET …/products/{productId}/variants --- Variants for a product.
  • GET …/tags and GET …/tags/{tagId} --- Catalog tags.
  • GET …/price-lists and GET …/price-lists/{priceListId} --- Internal price lists.
  • GET …/effective-price?sku=…&at=… --- Resolve price for a SKU (at optional ISO datetime).
  • GET …/suppliers --- Suppliers.
  • GET …/suppliers/{supplierId}/products --- Supplier products.
  • GET …/suppliers/{supplierId}/price-lists and GET …/suppliers/{supplierId}/price-lists/{supplierPriceListId} --- Supplier price lists.
  • GET …/units --- Measurement units.
  • GET …/packagings --- Packagings.
  • GET …/packaging-equivalences --- Packaging equivalences.

Responses use the same { success: true, data: … } shapes as the authenticated dashboard GET routes under /api/v1/projects/…/market/….

Further reading

  • API keys and scopes: ../../../api/authentication{.interpreted-text role="doc"}
📚