## TL;DR
Apollo stops enriching when credits run out, and the agent's worst move is to keep sending with empty firmographic fields, which produces blank personalization and broken ICP filtering. Check the credit balance before each enrichment batch, halt enrichment-dependent steps the moment a 402 appears, and alert the operator instead of degrading silently.

## The query

```text
apollo '402 payment required: enrichment credits exhausted'  -  agent proceeded with blank firmographics
```

## Steps

### 1. Check the credit balance before every enrichment batch
Query the Apollo account's remaining credit balance at the start of each enrichment run. If the balance cannot cover the batch, do not start it: partial enrichment produces a half-personalized list that is worse than a paused one.

Expected: enrichment runs only start when credits cover the full batch.

### 2. Halt enrichment-dependent steps on 402
Match the 402 response in the agent's enrichment calls. On the first 402, stop the enrichment loop, mark the affected leads as unenriched, and pause any personalization or ICP-filtering steps that depend on the missing data. Never substitute blank fields and continue.

Expected: no lead gets personalized copy or ICP scoring from missing data.

### 3. Alert the operator with the numbers
Notify the operator with the credit balance, the batch size that failed, and the burn rate that emptied the account. Include whether this was a surprise (no monitoring) or a known cliff (top-up pending).

Expected: the operator knows exactly how many credits are needed and why they ran out.

### 4. Top up or shrink the scope, then resume cleanly
Either add credits or narrow the enrichment scope (fewer leads, fewer data points per lead) to fit the budget. Re-run enrichment only for the leads marked unenriched, then unpause the dependent steps.

Expected: enrichment completes for the full active list with no blank-firmographic sends.

## Use this when

- Apollo enrichment calls fail with 402 payment required
- The agent sent emails with blank company fields after enrichment failed
- Credit burn suddenly accelerated (new workflow enriching too broadly)

## Not for this skill when

- Apollo returns 429 (that is rate limiting, not billing)
- Calls fail with 401 (that is the API key, not credits)
- Enrichment returns stale or wrong data (that is data quality, not quota)

## Variant phrasings

### apollo 402 payment required credits exhausted
Code-first phrasing. Same halt-and-alert handling.

### apollo enrichment credits ran out agent kept going
Symptom phrasing. Step 2 is the behavior change that matters.

### enrichment failed blank firmographics sent anyway
Consequence phrasing. The pre-batch balance check prevents the repeat.

## Why it happens
Enrichment credits are a consumable budget, and agents are very good at consuming budgets: a new workflow that enriches every lead, or a retry loop that re-enriches on failure, can drain an account in hours. Apollo answers with 402, but nothing in the agent's default behavior treats 402 as a stop signal, so it proceeds with empty data and the downstream personalization silently degrades.

## Edge cases

- Some plans auto-recharge and some do not. Know which the account has before assuming a 402 is temporary.
- Cached enrichment results can cover a credit gap for repeat leads. Check the cache before declaring leads unenriched.
- If multiple agents share one Apollo account, attribute credit spend per agent or one workflow starves the others.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_q7eqr3EVW5cOtr9gOzHPQQ
