-- HeyRoute expansion from TapCanvas-pro, 2026-09-11. PostgreSQL, data only. -- Seven opt-in channels; no private credentials. Existing keys/status are preserved. -- Procurement baseline: 0.25 CNY/credit; text/image retail x2, video x1.5. -- Apply after the bootstrap and 2026-09-02 image patch. No real database is -- modified by checking this file into the repository. \set ON_ERROR_STOP on BEGIN; CREATE TEMP TABLE heyroute_channels (payload jsonb) ON COMMIT DROP; INSERT INTO heyroute_channels SELECT value FROM jsonb_array_elements('[{"name":"heyroute-image","models":"gpt-image-2,flux-klein-2,grok-imagine-image,gemini-3-pro-image-preview,gemini-3.1-flash-image-preview","setting":{"model_protocols":{},"default_protocol":{"protocol":"openai"},"image_billing_unit":"image","image_sale_multiplier":2,"image_fixed_model_names":{"gpt-image-2":true,"flux-klein-2":true,"grok-imagine-image":true,"gemini-3-pro-image-preview":true,"gemini-3.1-flash-image-preview":true},"image_pricing_overrides":{"gemini-3-pro-image-preview":{"specs":[{"spec_key":"image:1k","price_cny":0.2,"resolution":"1k"},{"spec_key":"image:2k","price_cny":0.3,"resolution":"2k"},{"spec_key":"image:4k","price_cny":0.4,"resolution":"4k"}],"currency":"CNY","billing_mode":"fixed_by_spec"},"gemini-3.1-flash-image-preview":{"specs":[{"spec_key":"image:1k","price_cny":0.2,"resolution":"1k"},{"spec_key":"image:2k","price_cny":0.3,"resolution":"2k"},{"spec_key":"image:4k","price_cny":0.4,"resolution":"4k"}],"currency":"CNY","billing_mode":"fixed_by_spec"}},"image_cost_per_image_cny":{"gpt-image-2":0.0625,"flux-klein-2":0.1875,"grok-imagine-image":0.0625}},"mapping":{"gemini-3-pro-image-preview":"gemini-3-pro-image","gemini-3.1-flash-image-preview":"gemini-3.1-flash-image"},"test_model":"gpt-image-2"},{"name":"heyroute-claude","models":"claude-sonnet-5,claude-opus-5","setting":{"default_protocol":{"protocol":"anthropic"},"model_protocols":{},"text_cost_per_million_cny":{"claude-sonnet-5":{"input":0.75,"output":3.75,"cache_read":0.075,"cache_write":0.9375},"claude-opus-5":{"input":1.875,"output":9.375,"cache_read":0.1875,"cache_write":2.34375}},"text_sale_multiplier":2},"mapping":{},"test_model":"claude-sonnet-5"},{"name":"heyroute-gpt","models":"gpt-5.6-terra,gpt-5.6-sol","setting":{"default_protocol":{"protocol":"openai"},"model_protocols":{},"text_cost_per_million_cny":{"gpt-5.6-terra":{"input":0.7,"output":4.2,"cache_read":0.07,"cache_write":0.875},"gpt-5.6-sol":{"input":1.75,"output":10.5,"cache_read":0.175,"cache_write":2.1875}},"text_sale_multiplier":2},"mapping":{},"test_model":"gpt-5.6-terra"},{"name":"heyroute-grok","models":"grok-4.6,grok-4.5,composer-2.5","setting":{"default_protocol":{"protocol":"openai"},"model_protocols":{},"text_cost_per_million_cny":{"grok-4.6":{"input":0.5,"output":1.5,"cache_read":0.125,"cache_write":0.5},"grok-4.5":{"input":0.5,"output":1.5,"cache_read":0.075,"cache_write":0.5},"composer-2.5":{"input":0.25,"output":0.5,"cache_read":0.05,"cache_write":0.25}},"text_sale_multiplier":2},"mapping":{},"test_model":"grok-4.6"},{"name":"heyroute-gemini","models":"gemini-3.1-pro,gemini-3-flash-preview,gemini-3.1-flash-lite,gemini-3.5-flash,gemini-3.6-flash,gemini-3.7-flash,gemini-3.8-flash","setting":{"default_protocol":{"protocol":"openai"},"model_protocols":{},"text_cost_per_million_cny":{"gemini-3.1-pro":{"input":0.75,"output":4.5,"cache_read":0.075,"cache_write":0.75},"gemini-3-flash-preview":{"input":0.1875,"output":1.125,"cache_read":0.01875,"cache_write":0.1875},"gemini-3.1-flash-lite":{"input":0.09375,"output":0.5625,"cache_read":0.009375,"cache_write":0.09375},"gemini-3.5-flash":{"input":0.5625,"output":3.375,"cache_read":0.05625,"cache_write":0.5625},"gemini-3.6-flash":{"input":0.28125,"output":1.40625,"cache_read":0.028125,"cache_write":0.28125},"gemini-3.7-flash":{"input":0.28125,"output":1.40625,"cache_read":0.028125,"cache_write":0.28125},"gemini-3.8-flash":{"input":0.28125,"output":1.40625,"cache_read":0.028125,"cache_write":0.28125}},"text_sale_multiplier":2},"mapping":{},"test_model":"gemini-3.1-pro"},{"name":"heyroute-cn","models":"kimi-k3","setting":{"default_protocol":{"protocol":"openai"},"text_cost_per_million_cny":{"kimi-k3":{"input":15.0,"output":75.0,"cache_read":1.5,"cache_write":15.0}},"text_sale_multiplier":2},"mapping":{},"test_model":"kimi-k3"},{"name":"heyroute-video","models":"grok-video,grok-imagine-video,grok-imagine-1.5-video,minimax-h3-quantized-768p,minimax-h3-original-768p,minimax-h3-original-1080p,minimax-h3-original-cf-2k,minimax-h3,seedance-2.5,seedance-2.0,seedance-2.0-fast","setting":{"default_protocol":{"protocol":"task.heyroute-video"},"video_cost_pricing":{"grok-video":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"405p","cny_per_second":0.05}]},"grok-imagine-video":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.25},{"resolution":"720p","cny_per_second":0.35}]},"grok-imagine-1.5-video":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.375},{"resolution":"720p","cny_per_second":0.65625},{"resolution":"1080p","cny_per_second":1.171875}]},"minimax-h3-quantized-768p":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"768p","cny_per_second":0.07}]},"minimax-h3-original-768p":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"768p","cny_per_second":0.175}]},"minimax-h3-original-1080p":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"1080p","cny_per_second":0.2625}]},"minimax-h3-original-cf-2k":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"2k","cny_per_second":0.2625}]},"minimax-h3":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.1875},{"resolution":"720p","cny_per_second":0.31875}]},"seedance-2.5":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":1.1475},{"resolution":"720p","cny_per_second":1.9125},{"resolution":"1080p","cny_per_second":4.9725}]},"seedance-2.0":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.375},{"resolution":"720p","cny_per_second":0.375}]},"seedance-2.0-fast":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.375},{"resolution":"720p","cny_per_second":0.375}]}},"video_sale_multiplier":1.5,"video_model_params":{"grok-video":[{"key":"duration","type":"enum","label":"时长","default":6,"options":[{"value":6,"label":"6s"},{"value":10,"label":"10s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"405p","options":[{"value":"405p","label":"405P"}]}],"grok-imagine-video":[{"key":"duration","type":"enum","label":"时长","default":1,"options":[{"value":1,"label":"1s"},{"value":2,"label":"2s"},{"value":3,"label":"3s"},{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"grok-imagine-1.5-video":[{"key":"duration","type":"enum","label":"时长","default":1,"options":[{"value":1,"label":"1s"},{"value":2,"label":"2s"},{"value":3,"label":"3s"},{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"},{"value":"1080p","label":"1080P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"minimax-h3-quantized-768p":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"768p","options":[{"value":"768p","label":"768P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"}]}],"minimax-h3-original-768p":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"768p","options":[{"value":"768p","label":"768P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"}]}],"minimax-h3-original-1080p":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"1080p","options":[{"value":"1080p","label":"1080P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"}]}],"minimax-h3-original-cf-2k":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"2k","options":[{"value":"2k","label":"2K"}]},{"key":"size","type":"enum","label":"画幅","default":"9:16","options":[{"value":"9:16","label":"9:16","aspectRatio":"9:16"}]}],"minimax-h3":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"seedance-2.5":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"},{"value":16,"label":"16s"},{"value":17,"label":"17s"},{"value":18,"label":"18s"},{"value":19,"label":"19s"},{"value":20,"label":"20s"},{"value":21,"label":"21s"},{"value":22,"label":"22s"},{"value":23,"label":"23s"},{"value":24,"label":"24s"},{"value":25,"label":"25s"},{"value":26,"label":"26s"},{"value":27,"label":"27s"},{"value":28,"label":"28s"},{"value":29,"label":"29s"},{"value":30,"label":"30s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"},{"value":"1080p","label":"1080P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"seedance-2.0":[{"key":"duration","type":"enum","label":"时长","default":15,"options":[{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"seedance-2.0-fast":[{"key":"duration","type":"enum","label":"时长","default":15,"options":[{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}]}},"mapping":{"grok-imagine-1.5-video":"grok-imagine-video-1.5","minimax-h3":"MiniMax-H3"},"test_model":"grok-video"}]'::jsonb); CREATE TEMP TABLE heyroute_models (payload jsonb) ON COMMIT DROP; INSERT INTO heyroute_models SELECT value FROM jsonb_array_elements('[{"model_name":"gpt-image-2","kind":"image","endpoints":{"image-generation":{}},"capabilities":["reference_images"],"params_def":[{"key":"n","type":"enum","label":"数量","default":1,"options":[{"value":1,"label":"1"}]}],"pricing_config":{}},{"model_name":"flux-klein-2","kind":"image","endpoints":{"image-generation":{}},"capabilities":["reference_images"],"params_def":[{"key":"n","type":"enum","label":"数量","default":1,"options":[{"value":1,"label":"1"}]},{"key":"size","type":"enum","label":"尺寸","default":"1024x1024","options":[{"value":"1024x1024","label":"1024x1024"},{"value":"2048x2048","label":"2048x2048"}]}],"pricing_config":{}},{"model_name":"grok-imagine-image","kind":"image","endpoints":{"image-generation":{}},"capabilities":["reference_images"],"params_def":[{"key":"n","type":"enum","label":"数量","default":1,"options":[{"value":1,"label":"1"}]}],"pricing_config":{}},{"model_name":"gemini-3-pro-image-preview","kind":"image","endpoints":{"image-generation":{}},"capabilities":["reference_images"],"params_def":[{"key":"n","type":"enum","label":"数量","default":1,"options":[{"value":1,"label":"1"}]},{"key":"image_size","type":"enum","label":"分辨率","default":"1K","options":[{"value":"1K","label":"1K"},{"value":"2K","label":"2K"},{"value":"4K","label":"4K"}]}],"pricing_config":{"specs":[{"spec_key":"image:1k","price_cny":0.2,"resolution":"1k"},{"spec_key":"image:2k","price_cny":0.3,"resolution":"2k"},{"spec_key":"image:4k","price_cny":0.4,"resolution":"4k"}],"currency":"CNY","billing_mode":"fixed_by_spec"}},{"model_name":"gemini-3.1-flash-image-preview","kind":"image","endpoints":{"image-generation":{}},"capabilities":["reference_images"],"params_def":[{"key":"n","type":"enum","label":"数量","default":1,"options":[{"value":1,"label":"1"}]},{"key":"image_size","type":"enum","label":"分辨率","default":"1K","options":[{"value":"1K","label":"1K"},{"value":"2K","label":"2K"},{"value":"4K","label":"4K"}]}],"pricing_config":{"specs":[{"spec_key":"image:1k","price_cny":0.2,"resolution":"1k"},{"spec_key":"image:2k","price_cny":0.3,"resolution":"2k"},{"spec_key":"image:4k","price_cny":0.4,"resolution":"4k"}],"currency":"CNY","billing_mode":"fixed_by_spec"}},{"model_name":"claude-sonnet-5","kind":"chat","endpoints":{"anthropic":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"claude-opus-5","kind":"chat","endpoints":{"anthropic":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gpt-5.6-terra","kind":"chat","endpoints":{"openai-response":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gpt-5.6-sol","kind":"chat","endpoints":{"openai-response":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"grok-4.6","kind":"chat","endpoints":{"openai-response":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"grok-4.5","kind":"chat","endpoints":{"openai-response":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"composer-2.5","kind":"chat","endpoints":{"openai-response":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gemini-3.1-pro","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gemini-3-flash-preview","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gemini-3.1-flash-lite","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gemini-3.5-flash","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gemini-3.6-flash","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gemini-3.7-flash","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"gemini-3.8-flash","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"kimi-k3","kind":"chat","endpoints":{"openai-chat":{}},"capabilities":[],"params_def":[],"pricing_config":{}},{"model_name":"grok-video","kind":"video","endpoints":{"openai-video":{}},"capabilities":[],"params_def":[{"key":"duration","type":"enum","label":"时长","default":6,"options":[{"value":6,"label":"6s"},{"value":10,"label":"10s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"405p","options":[{"value":"405p","label":"405P"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"405p","cny_per_second":0.07500000000000001}]}},{"model_name":"grok-imagine-video","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":1,"options":[{"value":1,"label":"1s"},{"value":2,"label":"2s"},{"value":3,"label":"3s"},{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.375},{"resolution":"720p","cny_per_second":0.5249999999999999}]}},{"model_name":"grok-imagine-1.5-video","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":1,"options":[{"value":1,"label":"1s"},{"value":2,"label":"2s"},{"value":3,"label":"3s"},{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"},{"value":"1080p","label":"1080P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.5625},{"resolution":"720p","cny_per_second":0.984375},{"resolution":"1080p","cny_per_second":1.7578125}]}},{"model_name":"minimax-h3-quantized-768p","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"768p","options":[{"value":"768p","label":"768P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"768p","cny_per_second":0.10500000000000001}]}},{"model_name":"minimax-h3-original-768p","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"768p","options":[{"value":"768p","label":"768P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"768p","cny_per_second":0.26249999999999996}]}},{"model_name":"minimax-h3-original-1080p","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"1080p","options":[{"value":"1080p","label":"1080P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"1080p","cny_per_second":0.39375000000000004}]}},{"model_name":"minimax-h3-original-cf-2k","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"2k","options":[{"value":"2k","label":"2K"}]},{"key":"size","type":"enum","label":"画幅","default":"9:16","options":[{"value":"9:16","label":"9:16","aspectRatio":"9:16"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"2k","cny_per_second":0.39375000000000004}]}},{"model_name":"minimax-h3","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.28125},{"resolution":"720p","cny_per_second":0.47812499999999997}]}},{"model_name":"seedance-2.5","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":4,"options":[{"value":4,"label":"4s"},{"value":5,"label":"5s"},{"value":6,"label":"6s"},{"value":7,"label":"7s"},{"value":8,"label":"8s"},{"value":9,"label":"9s"},{"value":10,"label":"10s"},{"value":11,"label":"11s"},{"value":12,"label":"12s"},{"value":13,"label":"13s"},{"value":14,"label":"14s"},{"value":15,"label":"15s"},{"value":16,"label":"16s"},{"value":17,"label":"17s"},{"value":18,"label":"18s"},{"value":19,"label":"19s"},{"value":20,"label":"20s"},{"value":21,"label":"21s"},{"value":22,"label":"22s"},{"value":23,"label":"23s"},{"value":24,"label":"24s"},{"value":25,"label":"25s"},{"value":26,"label":"26s"},{"value":27,"label":"27s"},{"value":28,"label":"28s"},{"value":29,"label":"29s"},{"value":30,"label":"30s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"},{"value":"1080p","label":"1080P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":1.72125},{"resolution":"720p","cny_per_second":2.8687500000000004},{"resolution":"1080p","cny_per_second":7.45875}]}},{"model_name":"seedance-2.0","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":15,"options":[{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.5625},{"resolution":"720p","cny_per_second":0.5625}]}},{"model_name":"seedance-2.0-fast","kind":"video","endpoints":{"openai-video":{}},"capabilities":["reference_images"],"params_def":[{"key":"duration","type":"enum","label":"时长","default":15,"options":[{"value":15,"label":"15s"}]},{"key":"resolution","type":"enum","label":"分辨率","default":"480p","options":[{"value":"480p","label":"480P"},{"value":"720p","label":"720P"}]},{"key":"size","type":"enum","label":"画幅","default":"16:9","options":[{"value":"16:9","label":"16:9","aspectRatio":"16:9"},{"value":"9:16","label":"9:16","aspectRatio":"9:16"},{"value":"1:1","label":"1:1","aspectRatio":"1:1"}]}],"pricing_config":{"currency":"CNY","billing_mode":"linear_by_duration_and_resolution","specs":[{"resolution":"480p","cny_per_second":0.5625},{"resolution":"720p","cny_per_second":0.5625}]}}]'::jsonb); DO $$ BEGIN IF EXISTS (SELECT c.name FROM channels c JOIN heyroute_channels s ON c.name=s.payload->>'name' GROUP BY c.name HAVING count(*)>1) THEN RAISE EXCEPTION 'duplicate HeyRoute channel names'; END IF; END $$; -- Catalog metadata is inserted only for new models; other vendors retain ownership. INSERT INTO models (model_name,description,tags,endpoints,kind,capabilities,status,sync_official,created_time,updated_time,name_rule,params_def,pricing_config) SELECT payload->>'model_name','HeyRoute model','heyroute',(payload->'endpoints')::text,payload->>'kind', (payload->'capabilities')::text,1,0,extract(epoch from now())::bigint,extract(epoch from now())::bigint,0, (payload->'params_def')::text,NULLIF((payload->'pricing_config')::text,'{}') FROM heyroute_models s WHERE NOT EXISTS (SELECT 1 FROM models m WHERE m.model_name=s.payload->>'model_name' AND deleted_at IS NULL); INSERT INTO channels (name,type,"group",models,model_mapping,status,base_url,key,created_time,priority,weight,tag,setting,test_model,auto_ban) SELECT payload->>'name',1,'default',payload->>'models',(payload->'mapping')::text,2,'https://heyroute.ai','', extract(epoch from now())::bigint,100,100,payload->>'name',(payload->'setting')::text,payload->>'test_model',1 FROM heyroute_channels s WHERE NOT EXISTS (SELECT 1 FROM channels c WHERE c.name=s.payload->>'name'); UPDATE channels c SET models=s.payload->>'models',model_mapping=(s.payload->'mapping')::text, setting=(COALESCE(NULLIF(c.setting,''),'{}')::jsonb || (s.payload->'setting'))::text, base_url='https://heyroute.ai',test_model=s.payload->>'test_model' FROM heyroute_channels s WHERE c.name=s.payload->>'name'; -- Retire stale routing entries without deleting their records. UPDATE abilities a SET enabled=false FROM channels c, heyroute_channels s WHERE a.channel_id=c.id AND c.name=s.payload->>'name' AND (a."group"<>c."group" OR NOT (a.model=ANY(string_to_array(s.payload->>'models',',')))); INSERT INTO abilities ("group",model,channel_id,enabled,priority,weight,tag) SELECT c."group",m,c.id,c.status=1 AND length(btrim(c.key))>0,c.priority,c.weight,c.tag FROM channels c JOIN heyroute_channels s ON c.name=s.payload->>'name' CROSS JOIN LATERAL unnest(string_to_array(s.payload->>'models',',')) m ON CONFLICT ("group",model,channel_id) DO UPDATE SET enabled=abilities.enabled AND excluded.enabled,priority=excluded.priority,weight=excluded.weight,tag=excluded.tag; -- Shared task/image base prices are needed for precharge; existing values win. INSERT INTO options (key,value) VALUES ('ModelPrice','{"gpt-image-2":0.125,"flux-klein-2":0.375,"grok-imagine-image":0.125,"gemini-3-pro-image-preview":0.2,"gemini-3.1-flash-image-preview":0.2,"grok-video":0.07500000000000001,"grok-imagine-video":0.375,"grok-imagine-1.5-video":0.5625,"minimax-h3-quantized-768p":0.10500000000000001,"minimax-h3-original-768p":0.26249999999999996,"minimax-h3-original-1080p":0.39375000000000004,"minimax-h3-original-cf-2k":0.39375000000000004,"minimax-h3":0.28125,"seedance-2.5":1.72125,"seedance-2.0":0.5625,"seedance-2.0-fast":0.5625}') ON CONFLICT (key) DO UPDATE SET value=('{"gpt-image-2":0.125,"flux-klein-2":0.375,"grok-imagine-image":0.125,"gemini-3-pro-image-preview":0.2,"gemini-3.1-flash-image-preview":0.2,"grok-video":0.07500000000000001,"grok-imagine-video":0.375,"grok-imagine-1.5-video":0.5625,"minimax-h3-quantized-768p":0.10500000000000001,"minimax-h3-original-768p":0.26249999999999996,"minimax-h3-original-1080p":0.39375000000000004,"minimax-h3-original-cf-2k":0.39375000000000004,"minimax-h3":0.28125,"seedance-2.5":1.72125,"seedance-2.0":0.5625,"seedance-2.0-fast":0.5625}'::jsonb || COALESCE(NULLIF(options.value,''),'{}')::jsonb)::text; DO $$ BEGIN IF (SELECT count(*) FROM channels c JOIN heyroute_channels s ON c.name=s.payload->>'name')<>7 THEN RAISE EXCEPTION 'expected seven HeyRoute channels'; END IF; IF (SELECT count(*) FROM abilities a JOIN channels c ON a.channel_id=c.id JOIN heyroute_channels s ON c.name=s.payload->>'name' WHERE a.model=ANY(string_to_array(s.payload->>'models',',')) AND (NOT a.enabled OR (c.status=1 AND length(btrim(c.key))>0)))<>31 THEN RAISE EXCEPTION 'HeyRoute ability invariant failed'; END IF; END $$; COMMIT;