# info.description
API-first storefronts for agents across the Unhuman brand network.

# paths./pricing/api/search.get.description
Search products by query and return product identifiers for offer lookup.

# paths./pricing/api/offers/{id}.get.description
Return current offers and prices for a product identifier.

# paths./autos/api/vin/{vin}.get.description
Decode a 17-character vehicle identification number.

# paths./autos/api/history/{vin}.get.description
Return price and mileage history for a VIN.

# paths./autos/api/dealers.get.description
Search car dealers by location and make.

# paths./health/api/products/{handle}.get.description
Fetch one health product by Shopify handle.

# paths./health/api/orders.post.description
Create a paid health product order with an L402 credential.

# paths./health/api/orders.post.responses.402.description
Payment required via L402 Lightning invoice

# paths./ink/api/catalog.get.description
Browse Printful product templates by category.

# paths./ink/api/catalog/{id}.get.description
Fetch template detail, variants, sizes, colors, and production costs.

# paths./ink/api/artworks/challenge.post.description
Start the paid artwork upload flow and return a short-lived upload token after L402 settlement.

# paths./ink/api/artworks/challenge.post.responses.402.description
Payment required via L402 Lightning invoice

# paths./ink/api/artworks.post.description
Upload and stage custom artwork using the short-lived bearer upload token returned by the paid challenge.

# paths./ink/api/artworks.post.parameters[].description
Bearer upload token from POST /api/artworks/challenge

# paths./ink/api/artworks.post.responses.403.description
Bearer upload token expired or already used

# paths./ink/api/products.post.description
Create a custom product from staged artwork. Files may include validated placement_options and layer_options; unsupported option names, malformed values, unsupported placements, conflicting placements, and unsupported layer-option mappings return 400 before any L402 invoice is issued. Product 92 supports placement_options [{name: "unlimited_color", value: true}] on embroidery_front; this maps to Printful full_color and may change Printful production cost, but not the flat Unhuman product-create fee.

# paths./ink/api/products.post.responses.402.description
Payment required via L402 Lightning invoice

# paths./ink/api/products/{uuid}.get.description
Fetch a custom product and mockup images by UUID.

# paths./ink/api/products/{uuid}.patch.description
Edit product metadata or variants using the bearer token.

# paths./ink/api/products/{uuid}.delete.description
Soft-delete a product using the bearer token.

# paths./ink/api/products/{uuid}/rotate-token.post.description
Rotate the bearer token for a custom product.

# paths./ink/api/orders.post.description
Create a paid print order for a custom product UUID.

# paths./ink/api/orders.post.responses.402.description
Payment required via L402 Lightning invoice

# paths./ink/api/shipping.get.description
Return shipping rate estimates for a variant and destination country.

# paths./house/api/listings.get.description
Search real estate listings with location and property filters.

# paths./house/api/listings.get.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/catalog.get.description
Search supported retailers and return product discovery summaries.

# paths./shopping/api/catalog.get.parameters[].description
Scope to search: all (federated across the cross-retailer allowlist, every Shopify merchant, and Nordstrom; excludes gap/oldnavy/bananarepublic), amazon, walmart, nordstrom, gap, oldnavy, bananarepublic, shopify (every Shopify merchant; results carry the merchant domain as their retailer), a merchant domain, or an allowlist merchant name

# paths./shopping/api/catalog.get.parameters[].description
Minimum price in integer cents (native pass-through per source)

# paths./shopping/api/catalog.get.parameters[].description
Maximum price in integer cents (native pass-through per source)

# paths./shopping/api/catalog.get.parameters[].description
true for quoteable in-stock results; false is unsupported

# paths./shopping/api/catalog/{productId}.get.description
Return one quote token and all-in checkout total for one Amazon, Walmart, Nordstrom, Gap, Old Navy, or Banana Republic product line. Nordstrom and Gap-family prices are verified through Channel3 lookup before quote creation. Channel3-retailer products with a real variant choice 422 unless the variant param pins every dimension (the error lists the options); variants_unknown: true on a quote means the data source reported no options — ask the buyer for size/color anyway and re-quote with variant; the selection is accepted unvalidated and applied at checkout.

# paths./shopping/api/catalog/{productId}.get.parameters[].description
Retailer to quote: amazon, walmart, nordstrom, gap, oldnavy, or bananarepublic

# paths./shopping/api/catalog/images.get.description
Return the full image gallery and basic metadata for a retailer product URL without minting a quote. Prices are unverified — use the quote endpoints for checkout pricing.

# paths./shopping/api/catalog/quote.get.description
Quote a product line whose identity is a retailer product URL: Shopify-merchant items and cross-retailer allowlist items (target, bestbuy, homedepot, lowes, costco, wayfair, macys, kohls, staples). Follow the quote_url from a search result verbatim — Shopify quote_urls are signed and cannot be constructed by hand. Returns the same quote fields as /api/catalog/{productId}; echo THIS response's product_id (the product URL) in POST /api/order.

# paths./shopping/api/catalog/quote.get.parameters[].description
Percent-encoded product URL from a cross-retailer search result (required for cross-retailer quotes)

# paths./shopping/api/catalog/quote.get.parameters[].description
The original search query (required for cross-retailer quotes; the price is re-verified against a fresh search)

# paths./shopping/api/catalog/quote.post.description
Upgrade a buffered Shopify quote to an address-exact total (item + shipping + tax) priced by the merchant's own checkout. Body: { quote: the signed token from the search result's quote_url, shipping_address }. Falls back to the buffered quote with exact_quote_unavailable when the merchant cannot price the address.

# paths./shopping/api/catalog/quote.post.requestBody.content.application/json.schema.properties.quote.description
Signed Shopify quote token — the value of the quote query parameter inside the search result's quote_url

# paths./shopping/api/catalog/quote.post.requestBody.content.application/json.schema.properties.shipping_address.description
Same shape as POST /api/order's shipping_address

# paths./shopping/api/order/preview.post.description
Price a whole basket as one order without paying or redeeming the quote tokens. Returns the single order-level service fee and charge_amount_cents — the all-in total the POST /api/order Lightning (L402) challenge will charge. For buffered quotes this equals the card all-in; for exact Shopify quotes the Lightning charge is lower (no card-processing fees) and a card payment charges the quote's checkout_total_cents instead.

# paths./shopping/api/order.post.description
Create one same-retailer purchase for distinct product lines using per-line quote tokens and an L402 payment credential. Each line quantity is an integer from 1 to 100 (one line per distinct product; set quantity to buy multiple units of the same product). Legacy top-level quote_token is accepted only for one product line. Include refund_destination (a Lightning Address, LNURL, BIP353 identifier, or BOLT12 offer) on every order: all automatic Lightning refunds are paid there — the full amount if the order fails after payment, and the unused estimate buffer after a successful order settles.

# paths./shopping/api/order.post.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/order/{orderId}.get.description
Fetch order status with the original L402 credential.

# paths./shopping/api/order/{orderId}.get.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/order/{orderId}/tracking.get.description
Fetch a concise, owner-safe tracking view: estimated delivery date, carrier labels, public carrier links, items, and region-level destination.

# paths./shopping/api/order/{orderId}/tracking.get.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/order/{orderId}/events.get.description
Fetch order lifecycle and tracking events.

# paths./shopping/api/order/{orderId}/events.get.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/order/{orderId}/cancel.post.description
Request best-effort cancellation for an order that is still waiting in the queue, with the same L402 credential used to create it. Body: { refund_destination } — a Lightning Address, BIP353 identifier, BOLT12 offer, or LNURL, stored with the order for the refund.

# paths./shopping/api/order/{orderId}/cancel.post.requestBody.content.application/json.schema.properties.refund_destination.description
Lightning Address, BIP353 identifier, BOLT12 offer, or LNURL for the refund payout

# paths./shopping/api/order/{orderId}/cancel.post.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/order/{orderId}/returns.get.description
Fetch returnable items and existing return requests for an order.

# paths./shopping/api/order/{orderId}/returns.get.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/order/{orderId}/returns.post.description
Create a Zinc return request for one or more returnable order items. If items is omitted, the order must have exactly one returnable item.

# paths./shopping/api/order/{orderId}/returns.post.responses.402.description
Payment required via L402 Lightning invoice

# paths./shopping/api/order/{orderId}/returns/{returnRequestId}.get.description
Refresh and fetch one return request, including labels, RMA, lifecycle status, and refund payout state.

# paths./shopping/api/order/{orderId}/returns/{returnRequestId}.get.responses.402.description
Payment required via L402 Lightning invoice

# components.securitySchemes.l402.description
Bitcoin Lightning L402 payment credential. Retry the paid request with Authorization: L402 {macaroon}:{preimage}.

# components.securitySchemes.uploadToken.description
Short-lived artwork upload token returned by POST /api/artworks/challenge. Send it as Authorization: Bearer {upload_token}.