{"openapi":"3.0.3","info":{"title":"Tagshop AI - Public Models API","version":"1.0.0","description":"Read-only, unauthenticated endpoint listing the AI video/image models Tagshop AI supports, with their pricing and configuration options. This is the same endpoint the tagshop.ai website itself calls client-side to populate its video/image generator widget - there is no separate developer program or API key."},"servers":[{"url":"https://tagshop.ai"}],"paths":{"/api/models":{"get":{"operationId":"listModels","summary":"List supported AI video/image models","description":"Returns every AI model Tagshop AI supports, grouped by capability section (text-to-video, image-to-video, video-to-video, text-to-image, image-to-image), each with its allowed aspect ratios and credit/pricing configuration.","responses":{"200":{"description":"Model catalog","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsResponse"}}},"headers":{"Cache-Control":{"schema":{"type":"string"},"description":"public, s-maxage=3600, stale-while-revalidate=86400"}}},"500":{"description":"Upstream model service unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}}},"components":{"schemas":{"ModelsResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","description":"Keyed by capability section, e.g. text_to_video, image_to_video, video_to_video, text_to_image, image_to_image.","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/Model"}}}}},"Model":{"type":"object","properties":{"name":{"type":"string"},"source":{"type":"string","enum":["Video","Image"]},"slug":{"type":"string"},"logo":{"type":"string","nullable":true},"description":{"type":"string"},"allowed_ratio":{"type":"array","items":{"type":"string"}},"default_ratio":{"type":"string"},"sound":{"type":"integer","enum":[0,1]},"make_default":{"type":"integer","enum":[0,1]},"creditConfig":{"type":"array","items":{"type":"object","properties":{"quality":{"type":"string"},"duration":{"type":"string","description":"Comma-separated valid durations in seconds, e.g. \"3,4,5,6\""},"sound":{"type":"integer","enum":[0,1]},"credit":{"type":"number"}}}}}}}}}