Skip to content
Opusgen

Demo workspace

POST /v1/send308 accounts blocked · 5 of 5 agents · first seen Sep 12

403 on first send

New API keys only have the read scope. The first send returns 403 Forbidden and says nothing about scopes, so agents retry with the same key, then switch to another email API.

Share of failed tasks
38%
Accounts blocked
308
MRR a month at risk
$3,080
Lab trials failed
36 of 200

What agents doThe path most agents take, from production and the lab

  1. The agent creates a keyPOST /v1/api-keys → 201 · scope: read
  2. The first send is refusedPOST /v1/send → 403 {"error":"Forbidden"}
  3. It retries with the same key4 retries in 25 s, median
  4. It reads the 403 docs pageGET /docs/errors/403.md · no mention of scopes
  5. It leavesSwitches vendors or reports the error

Where it comes from

  • src/errors.ts:48

    48throw new ApiError(403, "Forbidden");
  • /docs/errors/403.md

    Explains 403 in general. Doesn't say how to add a scope.

  • Default key scope

    read

In productionAccounts blocked, by the day they made their key

By agent

  • claude-code105 · 17%
  • codex82 · 21%
  • cursor86 · 32%
  • gemini-cli35 · 22%

Count, and the share of that agent's API keys it blocked.

Accounts it blocked

Fix

What it costs

$3,080/mo

308 blocked accounts × $10 of MRR per working account. New agent-started accounts that reach a working call bring $6,100 of MRR across 610 accounts.

In the labRun 412, failed trials by task

  • auth1
  • send19
  • template7
  • retry9

25 of 36 agents that hit it switched to another email API.

Open run 412