Use a BytePlus IAM Access Key, not a ModelArk or Seedance API key. Attach BillingCenterReadOnlyAccess.
ArkReadOnlyAccess cannot call ListBillDetail. Costory currently ingests the whole BytePlus account bill. There is no Seedance product-code filter yet.- Manual setup
- Terraform
1
Create an IAM Access Key
In BytePlus Console > IAM > Key Management, create an IAM Access Key ID and Secret Access Key. Copy the secret immediately. It is shown once.Do not use a ModelArk or Seedance API key (Bearer). Costory signs Billing OpenAPI with HMAC-SHA256 (
service=billing).2
Attach BillingCenterReadOnlyAccess
Attach BillingCenterReadOnlyAccess to that IAM user. Main-account keys can call billing by default. IAM-user keys need that policy.
ArkReadOnlyAccess is not enough.3
Connect in Costory
Go to Integrations, click + Add integration, then choose BytePlus Platform under Billing. The connect URL is
/integration/new/seedance-ai/billing. 4
Enter connection details
Fill Connection name (default BytePlus Platform), Access Key ID, and Secret Access Key.Region is optional. It is the HMAC signing region, not a hostname. Leave it empty for
ap-singapore-1. The billing host stays billing.byteplusapi.com (International). A wrong signing region typically fails as SignatureDoesNotMatch.Start date is optional. Leave it empty to use Costory’s default lookback. The BytePlus API cap is the last 24 months, earliest 2022-01.5
Validate, then save
Click Validate. Costory calls ListBillDetail with a signed HMAC request. Save stays disabled until the Access Key can read bill details. An empty current-month list is still success. If this is the only billing source and it is demo data, Costory asks you to confirm before replacing it.
Field reference
What Costory includes
Costory pulls ListBillDetail and maps it into . Typical lines are billed BytePlus products for that account, including Seedance and ModelArk when they appear on the invoice. Explorer dollars are invoice cash: billed amount isPayableAmount, list amount is OriginalBillAmount.
How to analyze BytePlus costs
- Spend over time: use the same date presets as other billing sources in Explorer
- Spend by product or SKU: group by Service name or SKU when those fields are populated from bill details
- ModelArk or Seedance Bearer API keys (wrong credential)
- A Seedance-only product filter (Costory currently ingests the whole account bill)
- Volcengine China billing (
billing.byteplusapi.com.cn,cn-*regions) - CNY to USD conversion beyond what BytePlus already returns
- Savings-plan amortization beyond
PayableAmount
Rotate the Access Key pair from Integrations when you need a new credential. The stored region stays the same. A region move is a different signing scope: create a new datasource.
Troubleshooting
Related pages
Billing Data
All billing providers and shared setup notes.
Kling AI billing
Connect Kling Open Platform unit deductions.
OpenRouter billing
Import OpenRouter organization costs.
Explorer
Filter and group BytePlus spend with the rest of your stack.
