# Port66 An open explorer for tokenized physical inventory, settled in USDC on Base. Port66 reports merchant records and their on-chain references. It does not assert authenticity or ownership beyond what those records contain. ## Free, unauthenticated API No account, no trust check, no payment: - GET https://port66.xyz/api/v1/tokenized-skus Browse active tokenized SKUs. Query: status, merchantId, brandSlug, q, page, limit (max 50). Responses are wrapped in a `data` envelope. Prices are decimal strings in USDC, e.g. "1500". - GET https://port66.xyz/api/v1/tokenized-skus/{id} One SKU with available quantity, inventory ledger and on-chain state. Example: curl https://port66.xyz/api/v1/tokenized-skus -G -d status=ACTIVE -d limit=2 ## Paid API (x402) Marketplace listing and market data are priced per call in USDC on Base mainnet. Agents identify with X-Agent-Id and X-Agent-Address; a Valiron trust score of 65 is required before a paid endpoint responds. Call without payment to receive a 402 challenge stating amount, network and recipient. - GET https://port66.xyz/api/agent/v1 — capability manifest (free) - GET https://port66.xyz/api/agent/v1/listings — $0.005 - GET https://port66.xyz/api/agent/v1/listings/{slug} — $0.005 - GET https://port66.xyz/api/agent/v1/market/{slug} — $0.01 ## Tokenizing your own inventory (write access) Any company can put physical inventory on the record — this is not limited to the marketplace, and no catalogue entry is required. Describe the item with `title` and you need no product, brand or category record of any kind. Issue a merchant API key from your account, then: - POST https://port66.xyz/api/v1/tokenized-skus Create a SKU. Header: `Authorization: Bearer p66_live_…` Minimum body: title, merchantSku, unitPriceUsdc, physicalStock. Optional: description, images (https), brandName, backedSupply (activates in the same call). tokenId and metadataHash are derived server-side if omitted. - POST https://port66.xyz/api/v1/tokenized-skus/bulk Up to 200 SKUs per call as { "items": [...] }. Rows succeed or fail independently and the response reports each by index. - POST https://port66.xyz/api/v1/tokenized-skus/{id}/activate Approve the supply you are backing, which makes it discoverable. - POST https://port66.xyz/api/v1/tokenized-skus/{id}/reconcile Correct physical stock with an audited ledger entry. Example — no catalogue involved: curl -X POST https://port66.xyz/api/v1/tokenized-skus \ -H "Authorization: Bearer p66_live_…" \ -H "Content-Type: application/json" \ -d '{"title":"Deep Groove Ball Bearing 6205-2RS", "brandName":"SKF","merchantSku":"BRG-6205", "unitPriceUsdc":"4.50","physicalStock":10000, "backedSupply":10000}' Self-described SKUs read back in the same shape as catalogue ones: `product` is synthesised from your title/images/brandName, and `selfDescribed: true` marks it. `product.brand.verified` is always false for a free-text brand — nothing about it has been checked. The claim is minted at PURCHASE, not at listing. Listing makes inventory machine-readable; the ERC-1155 claim is created when someone buys it, and burned when they redeem the physical item. API keys are scoped to the tokenized-SKU API and to the merchant that issued them. A key cannot reach orders, payments or account settings, and cannot issue further keys. Buying still requires a signed-in session. ## Specifications - OpenAPI: https://port66.xyz/openapi.json - x402 discovery: https://port66.xyz/.well-known/x402 ## Human pages - https://port66.xyz/sku — inventory explorer - https://port66.xyz/sku/agents — agent API documentation - https://port66.xyz/sku/proof — what each field is verified against - https://port66.xyz/sku/list — list your own inventory ## Reading the data honestly - `physicalStock` is units the merchant holds; `tokenizedStock` is units backed on-chain. They are not the same number and neither implies the other. - `merchant.verified` is account standing, not a claim about any item. - Fields marked "not yet indexed" have no backend behind them yet. Absent data is reported as absent rather than inferred.