{"components":{"schemas":{"Cut":{"additionalProperties":false,"properties":{"finish":{"enum":["outlined","filled"],"type":"string"},"radius":{"enum":[0,1,2,3],"type":"integer"},"size":{"enum":[16,20,24],"type":"integer"},"stroke":{"enum":[1,1.5,2,2.5,3],"type":"number"}},"type":"object"},"Error":{"additionalProperties":false,"properties":{"code":{"enum":["invalid_request","invalid_api_key","insufficient_credits","model_not_found","rate_limit_exceeded","model_offline","model_unavailable","model_error","server_error"],"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"request_id":{"type":"string"},"retry_after":{"type":"integer"},"status":{"type":"integer"}},"required":["status","code","message","request_id"],"type":"object"},"IconDraw":{"additionalProperties":false,"properties":{"concept":{"type":"string"},"created":{"type":"integer"},"credits":{"type":"integer"},"cut":{"$ref":"#/components/schemas/Cut"},"data":{"items":{"$ref":"#/components/schemas/IconDrawItem"},"type":"array"},"id":{"type":"string"},"images":{"type":"integer"},"model":{"type":"string"},"object":{"const":"icon.draw","type":"string"},"prompt":{"type":["string","null"]},"revision":{"type":"string"},"took_ms":{"type":"integer"},"usage":{"additionalProperties":false,"description":"Null when the provider has not reported token usage.","properties":{"input_tokens":{"type":"integer"},"output_tokens":{"type":"integer"},"reasoning_tokens":{"type":"integer"},"total_tokens":{"type":"integer"}},"type":["object","null"]}},"required":["concept","created","cut","data","id","images","model","object","prompt","revision","took_ms","usage"],"type":"object"},"IconDrawItem":{"additionalProperties":false,"properties":{"attempts":{"type":"integer"},"findings":{"type":"array"},"index":{"type":"integer"},"intent":{"type":"string"},"mime_type":{"const":"image/svg+xml","type":"string"},"program":{"type":"string"},"status":{"enum":["checked","draft"],"type":"string"},"svg":{"type":"string"}},"type":"object"},"IconRequest":{"additionalProperties":false,"properties":{"concept":{"type":"string"},"cut":{"$ref":"#/components/schemas/Cut"},"images":{"items":{"additionalProperties":false,"properties":{"base64":{"type":"string"},"mime":{"enum":["image/png","image/jpeg","image/webp"],"type":"string"}},"required":["base64","mime"],"type":"object"},"maxItems":4,"type":"array"},"model":{"enum":["iconsmith-1"],"type":"string"},"n":{"enum":[1,2],"type":"integer"},"prompt":{"maxLength":500,"type":"string"},"stream":{"type":"boolean"}},"type":"object"}},"securitySchemes":{"bearerAuth":{"bearerFormat":"ism_live_ or ism_test_","scheme":"bearer","type":"http"}}},"info":{"description":"Iconsmith-1 draws icons in a pinned family. v1 lives under /api/v1/. Breaking changes ship as /api/v2/. v1 is not deprecated; no Sunset header is sent until a successor is published.","title":"Iconsmith","version":"1.0.0","x-deprecation-policy":"URL path versioning. Deprecation is signalled with Deprecation and Sunset headers plus the docs changelog. Current surface: /api/v1/."},"openapi":"3.1.0","paths":{"/api/v1/icons":{"post":{"description":"Draw one or two icon candidates. At least one of concept, prompt, or images.","operationId":"createIcon","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IconRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IconDraw"}}},"description":"A draw object with data[]."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid_request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"invalid_api_key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"insufficient_credits"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"model_not_found"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"rate_limit_exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"server_error"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"model_error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"model_offline or model_unavailable"}},"security":[{"bearerAuth":[]},{}],"summary":"Draw icons"}},"/api/v1/models":{"get":{"description":"The one served model, as a list.","operationId":"listModels","responses":{"200":{"description":"object=list with data[]."}},"summary":"List models"}},"/api/v1/models/{model}":{"get":{"description":"The model object, or model_not_found.","operationId":"getModel","parameters":[{"in":"path","name":"model","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A model object."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"model_not_found"}},"summary":"Get a model"}}},"servers":[{"url":"https://blode.co/iconsmith"}]}