{"openapi":"3.1.0","info":{"title":"Placeholder API","version":"1.0.0","description":"A fast, fully-local SVG generator for mockups and UIs: placeholder images (a sized rectangle with centered text and automatic contrast), initials avatars (with a deterministic colour derived from the name, in a circle or square), and identicon-style symmetric patterns generated deterministically from any seed. Every endpoint returns the JSON envelope or, with raw=1, the raw SVG so the URL can be used directly as an image source. Pure server-side compute, no third-party upstream, so responses are instant and always available. Ideal for prototypes, dashboards, user avatars, empty states and design systems.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/placeholder-api","description":"oanor gateway"}],"tags":[{"name":"Placeholder"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/avatar":{"get":{"operationId":"get_v1_avatar","tags":["Placeholder"],"summary":"Initials avatar (SVG)","description":"","parameters":[{"name":"name","in":"query","required":true,"description":"Name for initials + colour","schema":{"type":"string"},"example":"Ada Lovelace"},{"name":"size","in":"query","required":false,"description":"Size 16-1024 (default 128)","schema":{"type":"string"},"example":"128"},{"name":"rounded","in":"query","required":false,"description":"circle (true) or square","schema":{"type":"string"},"example":"true"},{"name":"bg","in":"query","required":false,"description":"Background hex (deterministic if omitted)","schema":{"type":"string"}},{"name":"raw","in":"query","required":false,"description":"Return raw SVG image","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"bg":"#0891b2","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"128\" height=\"128\" viewBox=\"0 0 128 128\"><circle cx=\"64\" cy=\"64\" r=\"64\" fill=\"#0891b2\"/><text x=\"50%\" y=\"50%\" dy=\".35em\" fill=\"#ffffff\" font-family=\"Arial,Helvetica,sans-serif\" font-size=\"51\" font-weight=\"600\" text-anchor=\"middle\">AL</text></svg>","name":"Ada Lovelace","size":128,"color":"#ffffff","format":"svg","rounded":true,"initials":"AL"},"meta":{"timestamp":"2026-05-30T14:35:20.027Z","request_id":"3e9ae28c-5a56-4ac3-bdbf-e88ff9820ef6"},"status":"ok","message":"OK","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/image":{"get":{"operationId":"get_v1_image","tags":["Placeholder"],"summary":"Placeholder image (SVG)","description":"","parameters":[{"name":"width","in":"query","required":false,"description":"Width 1-4000 (default 300)","schema":{"type":"string"},"example":"300"},{"name":"height","in":"query","required":false,"description":"Height 1-4000","schema":{"type":"string"},"example":"200"},{"name":"text","in":"query","required":false,"description":"Centered text","schema":{"type":"string"},"example":"Hello"},{"name":"bg","in":"query","required":false,"description":"Background hex","schema":{"type":"string"},"example":"cccccc"},{"name":"color","in":"query","required":false,"description":"Text hex (auto-contrast if omitted)","schema":{"type":"string"}},{"name":"raw","in":"query","required":false,"description":"Return raw SVG image","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"bg":"#cccccc","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"300\" height=\"200\" viewBox=\"0 0 300 200\"><rect width=\"300\" height=\"200\" fill=\"#cccccc\"/><text x=\"50%\" y=\"50%\" dy=\".35em\" fill=\"#333333\" font-family=\"Arial,Helvetica,sans-serif\" font-size=\"40\" font-weight=\"bold\" text-anchor=\"middle\">Hello</text></svg>","text":"Hello","color":"#333333","width":300,"format":"svg","height":200},"meta":{"timestamp":"2026-05-30T14:35:20.102Z","request_id":"0b0ce810-39fc-48b2-a8e5-8d620f7088d8"},"status":"ok","message":"OK","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/pattern":{"get":{"operationId":"get_v1_pattern","tags":["Placeholder"],"summary":"Identicon pattern (SVG)","description":"","parameters":[{"name":"seed","in":"query","required":true,"description":"Seed (e.g. email/username)","schema":{"type":"string"},"example":"user@example.com"},{"name":"size","in":"query","required":false,"description":"Size 32-1024 (default 240)","schema":{"type":"string"},"example":"240"},{"name":"grid","in":"query","required":false,"description":"Grid 3-8 (default 5)","schema":{"type":"string"},"example":"5"},{"name":"raw","in":"query","required":false,"description":"Return raw SVG image","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"bg":"#f0f0f0","fg":"#4f46e5","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"240\" height=\"240\" viewBox=\"0 0 240 240\"><rect width=\"240\" height=\"240\" fill=\"#f0f0f0\"/><rect x=\"0\" y=\"48\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"192\" y=\"48\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"0\" y=\"144\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"192\" y=\"144\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"48\" y=\"0\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"144\" y=\"0\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"48\" y=\"48\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"144\" y=\"48\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"96\" y=\"48\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"96\" y=\"48\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"96\" y=\"96\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"96\" y=\"96\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"96\" y=\"192\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/><rect x=\"96\" y=\"192\" width=\"48\" height=\"48\" fill=\"#4f46e5\"/></svg>","grid":5,"seed":"user@example.com","size":240,"format":"svg"},"meta":{"timestamp":"2026-05-30T14:35:20.173Z","request_id":"6f4efdf1-1be1-4ade-a053-9a54cbe9e4c0"},"status":"ok","message":"OK","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":22000,"rps_limit":2,"hard_limit":true},{"slug":"basic","name":"Basic","price_cents_month":300,"monthly_call_quota":330000,"rps_limit":12,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":900,"monthly_call_quota":2100000,"rps_limit":40,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":2600,"monthly_call_quota":11000000,"rps_limit":150,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/placeholder-api"}