把一个项目从旧组织迁到新组织,迁移工具显示成功,原 key 全部变 401,历史用量页是空的,只剩模型列表还在,服务商说 key 不随项目走。

一开始怀疑是「迁移只搬配置和成员,不搬历史数据」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。key 绑定组织,迁移相当于在新组织重建。还有一种是用量按组织维度存储,不跟项目迁移。

另外,旧组织仍持有同名项目前缀,容易看错。

迁移前先把现有 key 清单导出

curl -s https://api.openai.com/v1/organization/api_keys -H "Authorization: Bearer $OLD_ADMIN" | jq -r '.data[] | [.name,.redacted_value] | @tsv' > keys.tsv

接着在新组织按清单重建 key 并打标签

curl -X POST https://api.openai.com/v1/organization/api_keys -H "Authorization: Bearer $NEW_ADMIN" -d '{"name":"svc-search","project_id":"proj_new"}'

再往下用双 key 并行切换降低中断

export OPENAI_API_KEY=$NEW_KEY; python smoke_test.py --model gpt-4o-mini

旧组织保留只读一周后正式吊销

curl -X DELETE https://api.openai.com/v1/organization/api_keys/key_old -H "Authorization: Bearer $OLD_ADMIN"

改完先别撤,确认这几项。新 key 在新组织下调用返回 200,用量从迁移当天开始记在新组织,旧 key 吊销后旧组织不再产生费用。

迁移清单里要把 key、用量、审计日志分开列,最容易漏的是 key,服务一重启才发现全部 401。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189