From 62bdd04901daa48646eecf68b79e2a0367b1fd7c Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 27 Apr 2026 10:52:57 +0900 Subject: [PATCH] feat(providers): add BytePlus ModelArk (international) + coding endpoint (#78) Adds two providers for BytePlus ModelArk, the international edition of Volcano Engine, distinct from the existing cn-only `volcengine` provider: - `byteplus`: standard `/api/v3` endpoint, 21 models total - Text (10): Seed 2.0 Pro/Mini/Lite/Code, Seed 1.8, Seed Translation, GLM-4.7, DeepSeek V3.2/V3.1, GPT-OSS-120B - Image (4): Seedream 3.0/4.0/4.5/5.0-lite (per-piece pricing in comments) - Video (7): Seedance 1.0/1.5 family + Dreamina Seedance 2.0/fast - `byteplus_coding`: `/api/coding` Anthropic-compatible endpoint with 9 friendly aliases (ark-code-latest auto-router, bytedance-seed-code, dola-seed-2.0-{pro,code,lite}, kimi-k2.5, glm-4.7, glm-5.1, gpt-oss-120b). Both use BYTEPLUS_API_KEY env var. All listed model IDs were verified to return HTTP 200 against the live ap-southeast endpoint. Pricing is the standard real-time tier from the BytePlus console (a discounted batch tier exists at roughly half the rate, not modeled here). Excluded for follow-up (schema doesn't currently support these modalities): - Skylark embedding-vision (no `embedding` modality in schema) - Hyper3D-Gen2, Hitem3D-2.0 (no `3d` modality in schema) --- providers/byteplus-coding.toml | 123 ++++++++++++++ providers/byteplus.toml | 298 +++++++++++++++++++++++++++++++++ 2 files changed, 421 insertions(+) create mode 100644 providers/byteplus-coding.toml create mode 100644 providers/byteplus.toml diff --git a/providers/byteplus-coding.toml b/providers/byteplus-coding.toml new file mode 100644 index 0000000..5395584 --- /dev/null +++ b/providers/byteplus-coding.toml @@ -0,0 +1,123 @@ +# BytePlus ModelArk — Coding Plan (Anthropic-compatible) — https://www.byteplus.com/en/product/ModelArk +# International edition's Claude Code-compatible endpoint with friendly model aliases. +# Models: 9 (auto-routed alias + 8 named models) +# +# Pricing matches the underlying versioned snapshots in byteplus.toml. The +# Coding Plan endpoint exposes friendly stable names that route to the +# current production snapshot, so versions advance silently without config +# changes (use `ark-code-latest` to always get the best current routing). + +[provider] +id = "byteplus_coding" +display_name = "BytePlus ModelArk Coding Plan" +api_key_env = "BYTEPLUS_API_KEY" +base_url = "https://ark.ap-southeast.bytepluses.com/api/coding" +key_required = true + +[[models]] +id = "ark-code-latest" +display_name = "Ark Code (auto-routed)" +tier = "frontier" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 1.00 +output_cost_per_m = 6.00 +supports_tools = true +supports_streaming = true +aliases = ["ark-coding"] + +[[models]] +id = "bytedance-seed-code" +display_name = "ByteDance Seed Code" +tier = "frontier" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 1.00 +output_cost_per_m = 6.00 +supports_tools = true +supports_streaming = true +aliases = [] + +[[models]] +id = "dola-seed-2.0-pro" +display_name = "Dola Seed 2.0 Pro" +tier = "frontier" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 1.00 +output_cost_per_m = 6.00 +supports_tools = true +supports_streaming = true +aliases = [] + +[[models]] +id = "dola-seed-2.0-code" +display_name = "Dola Seed 2.0 Code" +tier = "smart" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 1.00 +output_cost_per_m = 6.00 +supports_tools = true +supports_streaming = true +aliases = [] + +[[models]] +id = "dola-seed-2.0-lite" +display_name = "Dola Seed 2.0 Lite" +tier = "smart" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 0.50 +output_cost_per_m = 4.00 +supports_tools = true +supports_streaming = true +aliases = [] + +[[models]] +id = "kimi-k2.5" +display_name = "Kimi K2.5" +tier = "frontier" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 0.60 +output_cost_per_m = 2.50 +supports_tools = true +supports_streaming = true +aliases = [] + +[[models]] +id = "glm-4.7" +display_name = "GLM-4.7" +tier = "smart" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 0.60 +output_cost_per_m = 2.20 +supports_tools = true +supports_streaming = true +aliases = [] + +[[models]] +id = "glm-5.1" +display_name = "GLM-5.1" +tier = "frontier" +context_window = 196608 +max_output_tokens = 8192 +input_cost_per_m = 0.80 +output_cost_per_m = 3.00 +supports_tools = true +supports_streaming = true +aliases = [] + +[[models]] +id = "gpt-oss-120b" +display_name = "GPT-OSS 120B" +tier = "smart" +context_window = 131072 +max_output_tokens = 8192 +input_cost_per_m = 0.10 +output_cost_per_m = 0.50 +supports_tools = true +supports_streaming = true +aliases = [] diff --git a/providers/byteplus.toml b/providers/byteplus.toml new file mode 100644 index 0000000..02d9ec4 --- /dev/null +++ b/providers/byteplus.toml @@ -0,0 +1,298 @@ +# BytePlus ModelArk — https://www.byteplus.com/en/product/ModelArk +# International edition of Volcano Engine (VolcEngine). +# Models: 21 (10 text + 4 image + 7 video) +# For Anthropic-compatible coding endpoint, see byteplus-coding.toml. +# +# Pricing: standard real-time tier (BytePlus offers a discounted batch tier +# at roughly half this rate; image/video models are billed per-call or +# per-token under their own units, see comments above each model). + +[provider] +id = "byteplus" +display_name = "BytePlus ModelArk" +api_key_env = "BYTEPLUS_API_KEY" +base_url = "https://ark.ap-southeast.bytepluses.com/api/v3" +key_required = true +media_capabilities = ["image_generation", "video_generation"] + +# ── Text models ──────────────────────────────────────────────────────── + +[[models]] +id = "seed-2-0-pro-260328" +display_name = "Seed 2.0 Pro" +tier = "frontier" +context_window = 262144 +max_output_tokens = 16384 +input_cost_per_m = 1.00 +output_cost_per_m = 6.00 +supports_tools = true +supports_vision = true +supports_streaming = true +supports_thinking = true +aliases = ["seed-pro", "seed-2-pro"] + +[[models]] +id = "seed-2-0-mini-260215" +display_name = "Seed 2.0 Mini" +tier = "fast" +context_window = 262144 +max_output_tokens = 16384 +input_cost_per_m = 0.20 +output_cost_per_m = 0.80 +supports_tools = true +supports_vision = true +supports_streaming = true +aliases = ["seed-mini", "seed-2-mini"] + +[[models]] +id = "seed-2-0-lite-260228" +display_name = "Seed 2.0 Lite" +tier = "smart" +context_window = 262144 +max_output_tokens = 16384 +input_cost_per_m = 0.50 +output_cost_per_m = 4.00 +supports_tools = true +supports_vision = true +supports_streaming = true +aliases = ["seed-lite", "seed-2-lite"] + +[[models]] +id = "seed-2-0-code-preview-260328" +display_name = "Seed 2.0 Code (preview)" +tier = "smart" +context_window = 262144 +max_output_tokens = 16384 +input_cost_per_m = 1.00 +output_cost_per_m = 6.00 +supports_tools = true +supports_vision = false +supports_streaming = true +aliases = ["seed-code", "seed-2-code"] + +[[models]] +id = "seed-1-8-251228" +display_name = "Seed 1.8" +tier = "smart" +context_window = 262144 +max_output_tokens = 16384 +input_cost_per_m = 0.50 +output_cost_per_m = 4.00 +supports_tools = true +supports_vision = true +supports_streaming = true +aliases = [] + +[[models]] +id = "seed-translation-250915" +display_name = "Seed Translation" +tier = "fast" +context_window = 4096 +max_output_tokens = 4096 +input_cost_per_m = 0.20 +output_cost_per_m = 0.80 +supports_tools = false +supports_vision = false +supports_streaming = true +aliases = [] + +[[models]] +id = "glm-4-7-251222" +display_name = "GLM-4.7" +tier = "smart" +context_window = 204800 +max_output_tokens = 16384 +input_cost_per_m = 0.60 +output_cost_per_m = 2.20 +supports_tools = true +supports_vision = false +supports_streaming = true +aliases = ["glm-4.7"] + +[[models]] +id = "deepseek-v3-2-251201" +display_name = "DeepSeek V3.2" +tier = "smart" +context_window = 131072 +max_output_tokens = 8192 +input_cost_per_m = 0.56 +output_cost_per_m = 0.84 +supports_tools = true +supports_vision = false +supports_streaming = true +aliases = ["deepseek-v3.2"] + +[[models]] +id = "deepseek-v3-1-250821" +display_name = "DeepSeek V3.1" +tier = "smart" +context_window = 131072 +max_output_tokens = 8192 +input_cost_per_m = 0.56 +output_cost_per_m = 1.68 +supports_tools = true +supports_vision = false +supports_streaming = true +aliases = ["deepseek-v3.1"] + +[[models]] +id = "gpt-oss-120b-250805" +display_name = "GPT-OSS 120B" +tier = "smart" +context_window = 131072 +max_output_tokens = 8192 +input_cost_per_m = 0.10 +output_cost_per_m = 0.50 +supports_tools = true +supports_vision = false +supports_streaming = true +aliases = ["gpt-oss-120b"] + +# ── Image generation models ──────────────────────────────────────────── +# Billed per-piece (not per-token). Real prices in comment above each entry. + +# $0.0300 per image +[[models]] +id = "seedream-3-0-t2i-250415" +display_name = "Seedream 3.0 (text-to-image)" +tier = "smart" +modality = "image" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = false +supports_streaming = false +aliases = ["seedream-3.0"] + +# $0.0300 per image +[[models]] +id = "seedream-4-0-250828" +display_name = "Seedream 4.0" +tier = "smart" +modality = "image" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = false +supports_streaming = false +aliases = ["seedream-4.0"] + +# $0.0400 per image +[[models]] +id = "seedream-4-5-251128" +display_name = "Seedream 4.5" +tier = "frontier" +modality = "image" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = false +supports_streaming = false +aliases = ["seedream-4.5"] + +# $0.0350 per image (Dola-Seedream-5.0-lite) +[[models]] +id = "seedream-5-0-260128" +display_name = "Seedream 5.0 Lite" +tier = "frontier" +modality = "image" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = false +supports_streaming = false +aliases = ["seedream-5.0-lite", "seedream-5.0"] + +# ── Video generation models ──────────────────────────────────────────── +# Billed per-K tokens (encoded video duration). Real per-K rates in comment. + +# $0.0018/K (text-to-video, with-cache rate $0.0009/K) +[[models]] +id = "seedance-1-0-lite-t2v-250428" +display_name = "Seedance 1.0 Lite (text-to-video)" +tier = "fast" +modality = "video" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = false +supports_streaming = false +aliases = ["seedance-1.0-lite-t2v"] + +# $0.0018/K (image-to-video, with-cache rate $0.0009/K) +[[models]] +id = "seedance-1-0-lite-i2v-250428" +display_name = "Seedance 1.0 Lite (image-to-video)" +tier = "fast" +modality = "video" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = true +supports_streaming = false +aliases = ["seedance-1.0-lite-i2v"] + +# $0.0025/K (image-to-video / text-to-video) +[[models]] +id = "seedance-1-0-pro-250528" +display_name = "Seedance 1.0 Pro" +tier = "smart" +modality = "video" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = true +supports_streaming = false +aliases = ["seedance-1.0-pro"] + +# $0.0010/K (image-to-video / text-to-video, with-cache rate $0.0005/K) +[[models]] +id = "seedance-1-0-pro-fast-251015" +display_name = "Seedance 1.0 Pro Fast" +tier = "fast" +modality = "video" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = true +supports_streaming = false +aliases = ["seedance-1.0-pro-fast"] + +# $0.0024/K (with audio) / $0.0012/K (without audio); with-cache half the rate +[[models]] +id = "seedance-1-5-pro-251215" +display_name = "Seedance 1.5 Pro" +tier = "frontier" +modality = "video" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = true +supports_streaming = false +aliases = ["seedance-1.5-pro"] + +# $0.0070-$0.0077/K (input without video) / $0.0043-$0.0047/K (input with video) +[[models]] +id = "dreamina-seedance-2-0-260128" +display_name = "Dreamina Seedance 2.0" +tier = "frontier" +modality = "video" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = true +supports_streaming = false +aliases = ["dreamina-seedance-2.0"] + +# $0.0056/K (input without video) / $0.0033/K (input with video) +[[models]] +id = "dreamina-seedance-2-0-fast-260128" +display_name = "Dreamina Seedance 2.0 Fast" +tier = "fast" +modality = "video" +input_cost_per_m = 0.0 +output_cost_per_m = 0.0 +supports_tools = false +supports_vision = true +supports_streaming = false +aliases = ["dreamina-seedance-2.0-fast"]