Product-Label Artwork Compiler
Compile a structured product-label spec (dimensions, EU FIC or US FDA ruleset, ingredients/allergens, nutrition, GS1 barcode, brand style) into a deterministic print-ready PDF with trim/bleed/safe boxes and embedded fonts, an SVG proof, a dieline, and a report auditing x-height legibility, allergen emphasis, nutrition order, and barcode check digits/quiet zones. Not a legal review of packaging compliance.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.15 USDC on Base to 0x2602…366da. The signed payment is good for 5 minutes.
- Paid to
- 0x2602…366da
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 150000 smallest units
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x26026370fe8b2bb17af9092a17691c76519366da",
"amount": "150000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {
"style": {
"text": {
"rgb": "#000000"
},
"accent": {
"rgb": "#8a3b12"
},
"background": {
"rgb": "#ffffff"
},
"fontFamily": "liberation-sans"
},
"format": {
"safeMm": 2,
"bleedMm": 2,
"widthMm": 100,
"heightMm": 60,
"cornerRadiusMm": 3
},
"barcode": {
"data": "5901234123457",
"symbology": "ean13",
"humanReadable": true
},
"product": {
"name": "Stonebake Sourdough Crackers",
"brand": "Stonebake",
"origin": "Baked in Italy",
"storage": "Store in a cool, dry place. Reseal after opening.",
"business": {
"name": "Stonebake Bakery Ltd",
"address": "14 Mill Lane, Bristol BS1 4ST, United Kingdom"
},
"dateLine": "Best before: see lid",
"description": "Crisp sourdough crackers baked with stone-milled wheat flour.",
"netQuantity": {
"unit": "g",
"value": 150
}
},
"ruleset": "eu-fic",
"warnings": [
"May contain traces of milk."
],
"nutrition": {
"fatG": 14.2,
"basis": "100g",
"saltG": 1.2,
"fibreG": 3.4,
"sugarsG": 2.1,
"energyKj": 1850,
"proteinG": 10.6,
"energyKcal": 442,
"saturatesG": 1.8,
"carbohydrateG": 68.5
},
"ingredients": [
{
"text": "Wheat flour",
"allergen": true
},
{
"text": "Sunflower oil",
"allergen": false
},
{
"text": "Sourdough culture",
"allergen": false
},
{
"text": "Sea salt",
"allergen": false
},
{
"text": "Sesame seeds",
"allergen": true
}
]
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"fonts": {
"bold": "LiberationSans-Bold.ttf",
"family": "liberation-sans",
"regular": "LiberationSans-Regular.ttf"
},
"checks": [
{
"code": "RULESET_SUPPORTED",
"detail": "\"eu-fic\" is a supported ruleset",
"status": "passed"
},
{
"code": "MANDATORY_BLOCKS",
"detail": "Every mandatory particular for \"eu-fic\" is present: product name, net quantity, business name/address, date line",
"status": "passed"
},
{
"code": "ALLERGEN_EMPHASIS",
"detail": "Every allergen keyword match in the ingredient list is marked allergen: true",
"status": "passed"
},
{
"code": "NUTRITION_ORDER",
"detail": "Nutrition rendered in the eu-fic declaration order: energy, fat, saturates, carbohydrate, sugars, fibre, protein, salt",
"status": "passed"
},
{
"code": "LOGO_VALID",
"detail": "No logo was supplied",
"status": "not_checked"
},
{
"code": "TEXT_FITS",
"detail": "All mandatory text fits within the safe area at or above the legal minimum text size, with no line wider than its column",
"status": "passed"
},
{
"code": "MIN_X_HEIGHT",
"detail": "Every mandatory text box meets or exceeds its 0.9 mm x-height floor",
"status": "passed"
},
{
"code": "SAFE_ZONE",
"detail": "Every drawn element, including ink extents and the barcode column, stays within the 2 mm safe zone",
"status": "passed"
},
{
"code": "NUTRITION_FORMAT",
"detail": "Nutrition declared in tabular format with the values aligned (FIC Art. 34(2))",
"status": "passed"
},
{
"code": "NET_QUANTITY_PLACEMENT",
"detail": "Only enforced under us-fda (21 CFR 101.105(f))",
"status": "not_checked"
},
{
"code": "BARCODE_VALID",
"detail": "Check digit valid for \"5901234123457\"",
"status": "passed"
},
{
"code": "BARCODE_MAGNIFICATION",
"detail": "Magnification 0.88x",
"status": "passed"
},
{
"code": "BARCODE_QUIET_ZONE",
"detail": "Quiet zones drawn: 3.18 mm left, 2.02 mm right",
"status": "passed"
},
{
"code": "QR_MODULE_SIZE",
"detail": "Only applies to 2D symbologies",
"status": "not_checked"
},
{
"code": "CONTRAST",
"detail": "Contrast ratio 7.73:1 meets the 4.5:1 target",
"status": "passed"
},
{
"code": "GLYPH_COVERAGE",
"detail": "Every character is covered by liberation-sans",
"status": "passed"
},
{
"code": "FONTS_EMBEDDED",
"detail": "2 embedded TrueType font program(s) found (regular + bold)",
"status": "passed"
},
{
"code": "PDF_BOXES",
"detail": "TrimBox and BleedBox are present in the generated PDF",
"status": "passed"
}
],
"format": {
"safeMm": 2,
"areaCm2": 60,
"bleedMm": 2,
"widthMm": 100,
"heightMm": 60,
"smallPack": true,
"cornerRadiusMm": 3
},
"layout": [
{
"xMm": 4,
"yMm": 4,
"bold": true,
"block": "header.brand",
"lines": 1,
"widthMm": 96,
"heightMm": 2.955891927083333,
"xHeightMm": 1.3978474934895833,
"fontSizePt": 7.5
},
{
"xMm": 4,
"yMm": 7.255891927083333,
"bold": true,
"block": "header.name",
"lines": 1,
"widthMm": 96,
"heightMm": 4.926486545138888,
"xHeightMm": 2.329745822482639,
"fontSizePt": 12.5
},
{
"xMm": 4,
"yMm": 12.482378472222223,
"bold": false,
"block": "header.description",
"lines": 1,
"widthMm": 96,
"heightMm": 2.561773003472222,
"xHeightMm": 1.211467827690972,
"fontSizePt": 6.5
},
{
"xMm": 4,
"yMm": 16.344151475694446,
"bold": false,
"block": "body.ingredients",
"lines": 2,
"widthMm": 59.56959149810366,
"heightMm": 4.969481336805556,
"xHeightMm": 1.211467827690972,
"fontSizePt": 6.5
},
{
"xMm": 4,
"yMm": 21.613632812500004,
"bold": false,
"block": "body.nutrition",
"lines": 9,
"widthMm": 59.56959149810366,
"heightMm": 21.82343967013889,
"xHeightMm": 1.211467827690972,
"fontSizePt": 6.5
},
{
"xMm": 4,
"yMm": 21.613632812500004,
"bold": false,
"block": "body.nutrition.values",
"lines": 9,
"widthMm": 59.56959149810366,
"heightMm": 21.82343967013889,
"xHeightMm": 1.211467827690972,
"fontSizePt": 6.5
},
{
"xMm": 4,
"yMm": 44.737072482638894,
"bold": true,
"block": "footer.netQuantity",
"lines": 1,
"widthMm": 59.56959149810366,
"heightMm": 2.167654079861111,
"xHeightMm": 1.025088161892361,
"fontSizePt": 5.5
},
{
"xMm": 4,
"yMm": 47.2047265625,
"bold": false,
"block": "footer.storage",
"lines": 1,
"widthMm": 59.56959149810366,
"heightMm": 2.167654079861111,
"xHeightMm": 1.025088161892361,
"fontSizePt": 5.5
},
{
"xMm": 4,
"yMm": 49.672380642361105,
"bold": false,
"block": "footer.origin",
"lines": 1,
"widthMm": 59.56959149810366,
"heightMm": 2.167654079861111,
"xHeightMm": 1.025088161892361,
"fontSizePt": 5.5
},
{
"xMm": 4,
"yMm": 52.14003472222221,
"bold": false,
"block": "footer.business",
"lines": 2,
"widthMm": 59.56959149810366,
"heightMm": 4.204945746527777,
"xHeightMm": 1.025088161892361,
"fontSizePt": 5.5
},
{
"xMm": 4,
"yMm": 56.644980468749985,
"bold": false,
"block": "warnings.0",
"lines": 1,
"widthMm": 59.56959149810366,
"heightMm": 2.167654079861111,
"xHeightMm": 1.025088161892361,
"fontSizePt": 5.5
}
],
"status": "passed",
"barcode": {
"data": "5901234123457",
"widthMm": 32.64,
"heightMm": 22.400000000000002,
"moduleMm": 0.28884955752212393,
"symbology": "ean13",
"truncated": true,
"magnification": 0.8753016894609815,
"checkDigitValid": true,
"quietZoneLeftMm": 3.1773451327433633,
"quietZoneRightMm": 2.0219469026548675
},
"ruleset": "eu-fic",
"timings": {
"totalMs": 324.87831199999994,
"layoutMs": 22.255515999999943,
"renderMs": 289.43764899999996
},
"contrast": {
"textOnBackground": 21,
"accentOnBackground": 7.73487762982462
},
"warnings": [
"Barcode height was truncated to 22.40 mm to fit the available space."
],
"allergens": {
"marked": [
"Wheat flour",
"Sesame seeds"
],
"detectedUnmarked": []
},
"artifacts": [
{
"href": "https://label.api.williamrobinson.dev/v1/label/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/label.pdf",
"name": "label.pdf",
"sha256": "20361c4fe6d39dfdc1c9dc7af8b44ef2022c178a6934170fda56863dbc642d45",
"mediaType": "application/pdf",
"sizeBytes": 23309
},
{
"href": "https://label.api.williamrobinson.dev/v1/label/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/label.svg",
"name": "label.svg",
"sha256": "b664f2085d9bbb0da3438681f726fd2e168cf9bc29fb8e4d5848890fdfdc5eaa",
"mediaType": "image/svg+xml",
"sizeBytes": 5472
},
{
"href": "https://label.api.williamrobinson.dev/v1/label/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/proof.png",
"name": "proof.png",
"sha256": "18debfc496d9ea19cb5b0455faf7524c88884b28d161f4b33396640c1ba17e0b",
"mediaType": "image/png",
"sizeBytes": 154380
},
{
"href": "https://label.api.williamrobinson.dev/v1/label/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/dieline.svg",
"name": "dieline.svg",
"sha256": "d36b7424a763ec866f7f71eabbf6205e0949794ba8bc6a14fb3bc1e15a7ef44c",
"mediaType": "image/svg+xml",
"sizeBytes": 609
},
{
"href": "https://label.api.williamrobinson.dev/v1/label/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/report.json",
"name": "report.json",
"sha256": "7c1f3db881e8538063b3925a7c5066db13f26aa0c77a06dfff5c1eaf421d7ebc",
"mediaType": "application/json",
"sizeBytes": 8226
}
],
"expiresAt": "2026-09-13T17:27:50.368Z",
"limitations": [
"This is an automated heuristic compliance check, not a legal review; consult qualified counsel before printing regulated packaging.",
"Allergen detection is a fixed keyword match against ingredient text, not a food-science parser; it can both miss and over-match unusual phrasing.",
"x-height is measured from the embedded font's own OS/2.xHeight metric, which can differ from a caliper measurement of printed type.",
"eu-fic's \"largest surface\" area test and us-fda's principal-display-panel area test both use the label's own trim area as a proxy; a real pack's largest surface may differ.",
"CMYK colours are converted to sRGB with a naive (1-c)(1-k) formula for the SVG/PNG preview, with no ICC profile; the PDF's own CMYK fills are exact and unaffected.",
"The generated PDF is not PDF/X-1a certified: it carries no OutputIntent or ICC profile.",
"Layout uses fixed header/body/footer/barcode-zone templates; no freeform positioning.",
"Only Latin-script text covered by the Liberation Sans/Serif glyph sets is supported; unsupported characters are reported by GLYPH_COVERAGE.",
"us-fda's Nutrition Facts graphic format (21 CFR 101.9(d)) is not verified, only the declared nutrient order.",
"Allergens are emphasised by capitalisation (FIC Art. 21(1)(b) / FALCPA), not bold weight; mixed-weight runs inside one line are not supported."
],
"minimumXHeightMm": 0.9
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"format",
"ruleset",
"product"
],
"properties": {
"style": {
"type": "object",
"properties": {
"text": {
"oneOf": [
{
"type": "object",
"required": [
"rgb"
],
"properties": {
"rgb": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"cmyk"
],
"properties": {
"cmyk": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 4,
"minItems": 4
}
},
"additionalProperties": false
}
],
"default": {
"rgb": "#000000"
}
},
"accent": {
"oneOf": [
{
"type": "object",
"required": [
"rgb"
],
"properties": {
"rgb": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"cmyk"
],
"properties": {
"cmyk": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 4,
"minItems": 4
}
},
"additionalProperties": false
}
],
"default": {
"rgb": "#000000"
}
},
"background": {
"oneOf": [
{
"type": "object",
"required": [
"rgb"
],
"properties": {
"rgb": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"cmyk"
],
"properties": {
"cmyk": {
"type": "array",
"items": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"maxItems": 4,
"minItems": 4
}
},
"additionalProperties": false
}
],
"default": {
"rgb": "#ffffff"
}
},
"fontFamily": {
"enum": [
"liberation-sans",
"liberation-serif"
],
"type": "string",
"default": "liberation-sans"
},
"logoHeightMm": {
"type": "number",
"default": 10,
"maximum": 50,
"minimum": 3
},
"logoPngBase64": {
"type": "string",
"description": "PNG, base64, at most 256 KiB decoded, at most 2000 px per side; checked for a valid PNG signature and re-encoded before embedding.",
"contentEncoding": "base64"
}
},
"additionalProperties": false
},
"format": {
"type": "object",
"required": [
"widthMm",
"heightMm"
],
"properties": {
"safeMm": {
"type": "number",
"default": 2,
"maximum": 10,
"minimum": 0,
"description": "Inside the trim; mandatory text never enters it."
},
"bleedMm": {
"type": "number",
"default": 2,
"maximum": 5,
"minimum": 0
},
"widthMm": {
"type": "number",
"maximum": 400,
"minimum": 20,
"description": "Trim width, millimetres."
},
"heightMm": {
"type": "number",
"maximum": 400,
"minimum": 20,
"description": "Trim height, millimetres."
},
"cornerRadiusMm": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "Must not exceed min(widthMm, heightMm) / 2; validated against the format's own dimensions."
}
},
"additionalProperties": false
},
"barcode": {
"type": "object",
"required": [
"symbology",
"data"
],
"properties": {
"data": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exactly 13 digits (with GS1 check digit) for ean13, exactly 12 for upca; any UTF-8 text up to 512 bytes for qrcode/datamatrix."
},
"widthMm": {
"type": "number",
"maximum": 300,
"minimum": 5,
"description": "Requested symbol width incl. quiet zones; omitted = GS1 nominal / 20 mm for 2D."
},
"symbology": {
"enum": [
"ean13",
"upca",
"qrcode",
"datamatrix"
],
"type": "string"
},
"humanReadable": {
"type": "boolean",
"default": true,
"description": "Draw the human-readable digits (1D only)."
}
},
"additionalProperties": false
},
"product": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"brand": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"origin": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"storage": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"business": {
"type": "object",
"required": [
"name",
"address"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"address": {
"type": "string",
"maxLength": 300,
"minLength": 1
}
},
"additionalProperties": false
},
"dateLine": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Rendered verbatim, e.g. \"Best before: see base\"."
},
"description": {
"type": "string",
"maxLength": 400,
"minLength": 1
},
"netQuantity": {
"type": "object",
"required": [
"value",
"unit"
],
"properties": {
"unit": {
"enum": [
"g",
"kg",
"ml",
"l",
"oz",
"fl oz",
"lb",
"pcs"
],
"type": "string"
},
"value": {
"type": "number",
"maximum": 100000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"ruleset": {
"enum": [
"eu-fic",
"us-fda",
"generic"
],
"type": "string",
"description": "eu-fic = EU Reg. 1169/2011 mandatory-particulars/x-height/allergen-emphasis/nutrition-order checks; us-fda = 21 CFR 101 PDP/type-size/FALCPA \"Contains:\"/Nutrition-Facts-order checks; generic = advisory x-height only, no mandatory-particulars checks."
},
"warnings": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"default": [],
"maxItems": 20
},
"nutrition": {
"type": "object",
"required": [
"basis"
],
"properties": {
"fatG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"basis": {
"enum": [
"100g",
"100ml",
"serving"
],
"type": "string"
},
"saltG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"fibreG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"sugarsG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"energyKj": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"proteinG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"sodiumMg": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"transFatG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"energyKcal": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"saturatesG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"servingSize": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"addedSugarsG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"carbohydrateG": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"cholesterolMg": {
"type": "number",
"maximum": 100000,
"minimum": 0
}
},
"additionalProperties": false
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"allergen"
],
"properties": {
"text": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"allergen": {
"type": "boolean",
"description": "Emphasised in the ingredient list and fed into the allergen-statement/scan checks."
}
},
"additionalProperties": false
},
"maxItems": 200
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object",
"$defs": {
"check": {
"type": "object",
"required": [
"code",
"status",
"detail"
],
"properties": {
"code": {
"type": "string"
},
"detail": {
"type": "string",
"maxLength": 4096
},
"status": {
"enum": [
"passed",
"failed",
"not_checked"
],
"type": "string"
}
},
"additionalProperties": false
},
"textBox": {
"type": "object",
"required": [
"block",
"xMm",
"yMm",
"widthMm",
"heightMm",
"fontSizePt",
"xHeightMm",
"lines",
"bold"
],
"properties": {
"xMm": {
"type": "number"
},
"yMm": {
"type": "number"
},
"bold": {
"type": "boolean"
},
"block": {
"type": "string"
},
"lines": {
"type": "integer",
"minimum": 0
},
"widthMm": {
"type": "number",
"minimum": 0
},
"heightMm": {
"type": "number",
"minimum": 0
},
"xHeightMm": {
"type": "number",
"minimum": 0
},
"fontSizePt": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"status",
"ruleset",
"format",
"minimumXHeightMm",
"fonts",
"layout",
"barcode",
"allergens",
"contrast",
"checks",
"warnings",
"limitations",
"timings",
"expiresAt",
"artifacts"
],
"properties": {
"fonts": {
"type": "object",
"required": [
"family",
"regular",
"bold"
],
"properties": {
"bold": {
"type": "string"
},
"family": {
"enum": [
"liberation-sans",
"liberation-serif"
],
"type": "string"
},
"regular": {
"type": "string"
}
},
"additionalProperties": false
},
"checks": {
"type": "array",
"items": {
"$ref": "#/properties/output/properties/example/$defs/check"
}
},
"format": {
"type": "object",
"required": [
"widthMm",
"heightMm",
"bleedMm",
"safeMm",
"cornerRadiusMm",
"areaCm2",
"smallPack"
],
"properties": {
"safeMm": {
"type": "number"
},
"areaCm2": {
"type": "number",
"minimum": 0
},
"bleedMm": {
"type": "number"
},
"widthMm": {
"type": "number"
},
"heightMm": {
"type": "number"
},
"smallPack": {
"type": "boolean",
"description": "Trim area below the ruleset's small-pack threshold (EU FIC Art. 13(3): 80 cm²)."
},
"cornerRadiusMm": {
"type": "number"
}
},
"additionalProperties": false
},
"layout": {
"type": "array",
"items": {
"$ref": "#/properties/output/properties/example/$defs/textBox"
}
},
"status": {
"enum": [
"passed",
"rejected"
],
"type": "string"
},
"barcode": {
"type": [
"object",
"null"
],
"required": [
"symbology",
"data",
"checkDigitValid",
"moduleMm",
"magnification",
"widthMm",
"heightMm",
"quietZoneLeftMm",
"quietZoneRightMm",
"truncated"
],
"properties": {
"data": {
"type": "string"
},
"widthMm": {
"type": "number",
"minimum": 0
},
"heightMm": {
"type": "number",
"minimum": 0
},
"moduleMm": {
"type": "number",
"minimum": 0
},
"symbology": {
"enum": [
"ean13",
"upca",
"qrcode",
"datamatrix"
],
"type": "string"
},
"truncated": {
"type": "boolean"
},
"magnification": {
"type": [
"number",
"null"
]
},
"checkDigitValid": {
"type": [
"boolean",
"null"
]
},
"quietZoneLeftMm": {
"type": "number",
"minimum": 0
},
"quietZoneRightMm": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"ruleset": {
"enum": [
"eu-fic",
"us-fda",
"generic"
],
"type": "string"
},
"timings": {
"type": "object",
"required": [
"layoutMs",
"renderMs",
"totalMs"
],
"properties": {
"totalMs": {
"type": "number",
"minimum": 0
},
"layoutMs": {
"type": "number",
"minimum": 0
},
"renderMs": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"contrast": {
"type": "object",
"required": [
"textOnBackground",
"accentOnBackground"
],
"properties": {
"textOnBackground": {
"type": "number",
"minimum": 0
},
"accentOnBackground": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"warnings": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4096
}
},
"allergens": {
"type": "object",
"required": [
"marked",
"detectedUnmarked"
],
"properties": {
"marked": {
"type": "array",
"items": {
"type": "string"
}
},
"detectedUnmarked": {
"type": "array",
"items": {
"type": "object",
"required": [
"ingredient",
"term"
],
"properties": {
"term": {
"type": "string"
},
"ingredient": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"artifacts": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"mediaType",
"sizeBytes",
"sha256",
"href"
],
"properties": {
"href": {
"type": "string",
"format": "uri"
},
"name": {
"enum": [
"label.pdf",
"label.svg",
"proof.png",
"dieline.svg",
"report.json"
],
"type": "string"
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"mediaType": {
"type": "string",
"maxLength": 128,
"minLength": 1
},
"sizeBytes": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 5
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"limitations": {
"type": "array",
"items": {
"type": "string",
"maxLength": 4096
}
},
"minimumXHeightMm": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
}
}
}
}
},
"builder-code": {
"info": {
"s": [
"cdp_sdk_server"
]
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"a": {
"type": "string",
"pattern": "^[a-z0-9_]{1,32}$",
"description": "App builder code"
},
"s": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9_]{1,32}$"
},
"maxItems": 11,
"description": "Service builder codes"
},
"w": {
"type": "string",
"pattern": "^[a-z0-9_]{1,32}$",
"description": "Wallet builder code"
}
},
"additionalProperties": false
}
},
"payment-identifier": {
"info": {
"required": true
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"required"
],
"properties": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z0-9_-]+$",
"maxLength": 128,
"minLength": 16
},
"required": {
"type": "boolean"
}
}
}
},
"eip2612GasSponsoring": {},
"erc20ApprovalGasSponsoring": {}
}Provenance
- Seen in the source catalog
- 2026-09-11 20:08Z
- Last indexed by Roundhouse
- 2026-09-24 12:50Z
- Last enriched (probe, favicon, geo)
- 2026-09-11 20:16Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 404
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 13 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service Product-Label Artwork Compiler and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=Product-Label%20Artwork%20Compiler' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://label.api.williamrobinson.dev/v1/label/compile, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.