Read the catalogue
Product pages are server-rendered HTML. The read API exposes the same model records, reference specifications and current public offers. Price is a decimal string in ETB, or null when it is not confirmed. Supplier costs and customer data are never included.
GET /api/v1/products/?q=iphone&limit=24
GET /api/v1/products/apple-iphone-17/
GET /openapi.json
GET /.well-known/agent.json
GET /llms.txtExplore the JSON catalogue · OpenAPI contract
Request a quote, not a purchase
The write endpoint requires a revocable API key, explicit customer consent and a UUID Idempotency-Key. Keys are created by the owner; only their hashes are stored. A matching retry returns the same enquiry, while a changed payload using the same key is rejected.
POST /api/v1/enquiries/
Authorization: Bearer OWNER_ISSUED_KEY
Idempotency-Key: A_NEW_UUID
Content-Type: application/json
{
"name": "Test Customer",
"phone": "0900000000",
"consent": true,
"requirements": "Test request only",
"items": [{"slug": "apple-iphone-17", "quantity": 1}]
}Read requests are limited to 180 per minute per client. New quote requests are limited to five per hour per authenticated agent. Respect 429 responses and retry guidance. Never infer consent from catalogue access.
Availability has a precise meaning
An offer is visible only while the verified supplier and product are active, the unit is released, stock is positive, the confirmation is no older than six hours, the explicit expiry has not passed, and tax, warranty and returns checks are complete. Read APIs expose the effective expiry. Reconfirm before accepting payment.
Discovery, without inflated claims
llms.txt and the agent manifest are simple discovery aids. They are not ACP or UCP certification, a shopping-platform integration, or a guarantee that any assistant will recommend MelaVolt. The public model catalogue is crawlable independently of sales activation. Personal enquiry, saved-device and owner pages remain private and excluded from indexing. A dedicated business domain is still recommended before launching campaigns.