## TL;DR

A 500 from HubSpot is a transient server error, not a problem with your request. Retry the failed fetches with exponential backoff, and if specific records keep 500ing, skip them into a retry list and continue the run. Never abort a whole run on a transient 500.

## Error

```text
HTTP 500: An unexpected error occurred while fetching associations.
```

## Steps

1. Retry the failed request after a short backoff (a few seconds). Expected: most 500s clear on the first retry.
2. If it still fails, retry with longer backoff up to a few minutes. Expected: transient server issues resolve.
3. If a specific record consistently 500s, log it to a retry list and continue with the rest. Expected: the run completes with a known exception list.
4. Revisit the retry list later; persistent 500s on one record may indicate corrupt data worth reporting. Expected: a tiny, actionable list.
5. Alert if the 500 rate spikes across many records; that signals a HubSpot incident, not your code. Expected: you stop retrying and wait.

## When to use

- HubSpot API returns 500 intermittently mid-run.
- An agent's association fetch loop dies on the first 500.
- After a HubSpot incident, catching up.

## When not to use

- 429 (back off for rate limits, different header).
- 403 (permissions, retrying never helps).
- 400 (your request is wrong).

## Tool compatibility

- HubSpot associations API v4; any HTTP client with retry.
- Run-level exception lists.

## Variant phrasings

### unexpected error fetching associations

Transient 500; retry with backoff.

### 500 on one record repeatedly

Skip, continue, and revisit.

## Why it happens

Large multi-tenant APIs have transient failures: deploys, hot partitions, overloaded nodes. The 500 is the platform saying "try again", not "you are wrong".

## Edge cases

- Retrying immediately in a tight loop can turn your client into the problem; always back off.
- Distinguish a HubSpot-wide incident (many 500s) from a bad record (one 500); the response differs.
- Log the request id from the response; support needs it if you escalate.

## Provenance

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