briascoi Additional evidence: I completed the supported upgrade flow from Settings → Drains. The checkout reached the final confirmation, but the server rejected the upgrade with: “Only pro trial subscriptions can be modified.” At the same time, the team API reports plan=pro and status=trialing, while Billing already shows a paid USD 20 Pro invoice dated August 7. This confirms an inconsistent subscription/entitlement state on Vercel’s side. Please reconcile the billing subscription and the team entitlement. I will not retry the payment because USD 20 has already been charged.
Amy Egan It looks like your team is on the Pro plan now. AI Gateway credits are billed separately, so you should be able to purchase credits to upgrade from the free tier from the AI Gateway tab in your team dashboard. You can also configure an auto-reload amount and spend limits. Please let me know if you still have any trouble with this. I'd be happy to help you get it working for your project
system Thank you for bringing this to our attention. To ensure this is investigated with the necessary priority and privacy, please report all security-related concerns, potential exploits, or abuse directly to the Vercel Security Team. Please submit your report here: vercel.com/abuse Reporting via this official channel is the fastest way to reach our security engineers and ensures that sensitive information is handled in a secure environment rather than a public forum.
Kawaki Nagisa I got a response that my 2 invoices will be refunded but I only got 1 refund invoice the other is still in paid status while the whole 1500 creds were removed so can someone from support help me expedite this bcs the support ticket got auto closed after there response I did create a follow up case : 0147h2jnlrddNrGY original case id : 01d14EiL4Dls9pih
Ryu Hi Edward, First, I’d edit the post and remove the Team ID. It is not an API key, but it is still better not to leave account identifiers public. For the 403 itself, I’d separate “the key is recognized” from “the workspace can run inference.” The fastest check is to test both model listing and a tiny completion with the same key from a local terminal: curl -i "ai-gateway.vercel.sh/v1/models" \ -H "Authorization: Bearer $AI_GATEWAY_API_KEY" \ -H "Content-Type: application/json" Then: curl -i "ai-gateway.vercel.sh/v1/chat/completions" \ -H "Authorization: Bearer $AI_GATEWAY_API_KEY" \ -H "Conten
Edward Hi Ryu, Thank you for your reply. Testing /v1/models returns 200 but /v1/chat/completions returns 403 access_denied HTTP/2 403 cache-control: public, max-age=0, must-revalidate content-type: application/json date: Mon, 22 Jun 2026 11:38:32 GMT server: Vercel strict-transport-security: max-age=63072000; includeSubDomains; preload vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch x-matched-path: /v1/chat/completions x-vercel-cache: MISS x-vercel-id: sin1::fra1::spqsq-1782128311682-72dfa5316781
Ryu Hi Edward, Thanks, that result is the important one. Since /v1/models returns 200, the Gateway endpoint, bearer token format, and key recognition are likely correct. Since /v1/chat/completions returns 403 access_denied, this does not look like a local network issue or a model-listing issue anymore. I’d try one last user-side check: create a brand-new AI Gateway API key from the same workspace after the credit top-up, then run the same two curl tests again. If the new key still gives: GET /v1/models => 200 POST /v1/chat/completions => 403 access_denied then I don’t think more SDK/app debugging