{"openapi":"3.1.0","info":{"title":"Brand Extractor API","version":"1.0.0","description":"Extract likely logo assets, colors, and font families from a public website URL.","x-guidance":"Use POST /api/v1/extract-brand when you need a website's likely logo URLs, brand colors, or font families. Send one public HTTP(S) URL as JSON. The endpoint costs $0.001 USDC through x402 on Base and returns ranked candidates with evidence and confidence scores.","termsOfService":"https://extract.ilyyya.com/terms","contact":{"email":"support@ilyyya.com"}},"servers":[{"url":"https://extract.ilyyya.com"}],"paths":{"/api/v1/extract-brand":{"post":{"operationId":"extractBrandFromWebsite","summary":"Extract logo, colors, and fonts from a website URL","description":"Returns ranked candidates with source evidence. Public HTTP(S) HTML pages only; does not execute client-side JavaScript.","tags":["brand extraction"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"url":{"type":"string","pattern":"^https?://","description":"Public HTTP(S) website URL to inspect for visible brand assets and styles.","maxLength":2048}},"required":["url"]},"example":{"url":"https://stripe.com"}}}},"responses":{"200":{"description":"Brand snapshot","headers":{"X-Request-Id":{"schema":{"type":"string"}},"PAYMENT-RESPONSE":{"schema":{"type":"string"},"description":"x402 settlement response"}},"content":{"application/json":{"schema":{"type":"object","properties":{"schema_version":{"type":"string","const":"1.0"},"requested_url":{"type":"string","pattern":"^https?://"},"final_url":{"type":"string","pattern":"^https?://"},"fetched_at":{"type":"string","description":"ISO 8601 timestamp"},"content_hash":{"type":"string"},"title":{"type":["string","null"]},"logos":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"evidence":{"type":"string"}},"required":["value","confidence","evidence"]}},"colors":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"evidence":{"type":"string"},"role":{"type":"string","enum":["primary_candidate","accent_candidate","background_candidate","other"]}},"required":["value","confidence","evidence","role"]}},"fonts":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"evidence":{"type":"string"}},"required":["value","confidence","evidence"]}},"metadata":{"type":"object","properties":{"description":{"type":["string","null"]},"theme_color":{"type":["string","null"]},"og_image":{"type":["string","null"]}},"required":["description","theme_color","og_image"]},"warnings":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schema_version","requested_url","final_url","fetched_at","content_hash","title","logos","colors","fonts","metadata","warnings","limitations"]},"example":{"schema_version":"1.0","requested_url":"https://example.com/","final_url":"https://example.com/","fetched_at":"2026-09-28T10:00:00.000Z","content_hash":"sha256:…","title":"Example","logos":[{"value":"https://example.com/logo.svg","confidence":0.9,"evidence":"img identified as logo by class/id/alt/src"}],"colors":[{"value":"#FF4B2B","confidence":0.81,"evidence":"stylesheet https://example.com/styles.css --brand-primary","role":"primary_candidate"}],"fonts":[{"value":"Inter","confidence":0.78,"evidence":"stylesheet https://example.com/styles.css"}],"metadata":{"description":"Example website","theme_color":"#FF4B2B","og_image":"https://example.com/social.png"},"warnings":[],"limitations":["Candidates are inferred from public page markup and styles, not verified brand guidelines."]}}}},"400":{"description":"Invalid JSON or missing URL"},"402":{"description":"x402 payment required"},"413":{"description":"Request or remote page is too large"},"415":{"description":"Remote resource is not HTML"},"422":{"description":"URL is unsafe, inaccessible, or invalid"},"502":{"description":"Remote website or payment facilitator failed"}}}},"/api/health":{"get":{"operationId":"getHealth","summary":"Check service health and payment mode","security":[],"responses":{"200":{"description":"Service status"}}}}},"components":{"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 payment authorization obtained from the HTTP 402 challenge."}}},"externalDocs":{"description":"Service documentation","url":"https://extract.ilyyya.com"}}