> ## Documentation Index
> Fetch the complete documentation index at: https://www.forager.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Forager is a REST API for B2B people, company and job post data: contact lookups (phone numbers, personal emails, work emails), person, company and job post search, and bulk data feeds.
> Server: https://api-v2.forager.ai. Send the API key in the X-API-KEY header. Most paths include {account_id}. Read FORAGER_API_KEY and FORAGER_ACCOUNT_ID from the environment; never put the key in client-side code, logs or prompts.
> To add Forager to a project, follow https://www.forager.ai/docs/guides/agent-quickstart.md. To pick an endpoint, read https://www.forager.ai/docs/guides/choose-an-endpoint.md. For end-to-end builds, see https://www.forager.ai/docs/recipes/overview.md.
> Most requests spend credits. Do not guess costs; use https://www.forager.ai/docs/api-overview/credit-pricing.md and ask the user before spending credits.
> Use only endpoints and fields defined in https://www.forager.ai/docs/openapi.yaml. Forager has no MCP server for the API yet; the /mcp endpoint on this site searches the documentation only.

# Report bad contact data

> Send call and email outcomes back to Forager with the feedback endpoints: connected or disconnected numbers, valid or invalid emails, wrong person.

![Report bad contact data: call and email outcomes flow back to Forager through the feedback endpoints](https://mintcdn.com/forager/OnhSHNo_LBQ7yKjR/images/illustrations/report-bad-contact-data-feedback-loop.svg?fit=max\&auto=format\&n=OnhSHNo_LBQ7yKjR\&q=85\&s=d882a0dc3170b405cef682bc9e048728)

When you call a number or email an address that Forager returned, send the outcome back with the feedback endpoints. Each report is stored as its own record. A dialer or sequencer can send one automatically after every call or bounce.

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
flowchart LR
  A[Contact lookup] --> B[Call or email]
  B --> C{Outcome}
  C -->|connected / valid| D[Feedback endpoint]
  C -->|disconnected / invalid| D
  D --> E[201 Created]
```

## Choose the endpoint

| You contacted | Endpoint | Required fields | `contact_status` values |
| - | - | - | - |
| A phone number | [Phone number feedback](https://www.forager.ai/docs/openapi/feedback/datastorage_feedback_phone_numbers_create.md) | `phone_number`, `contact_status` | `connected`, `disconnected` |
| A personal email | [Personal email feedback](https://www.forager.ai/docs/openapi/feedback/datastorage_feedback_personal_emails_create.md) | `email`, `contact_status` | `valid`, `invalid` |
| A work email | [Work email feedback](https://www.forager.ai/docs/openapi/feedback/datastorage_feedback_work_emails_create.md) | `email`, `contact_status` | `valid`, `invalid` |

Optional fields on all three:

* `is_correct_person`: `true` if the person was confirmed, `false` if it was the wrong person. Omit it or send `null` when you couldn't tell; for example, a disconnected number reaches nobody. `null` means "unknown", which is different from `false`.
* `name`: the name you believe the contact belongs to.
* `person_id`: the Forager person ID the contact came from.

## Send a report

```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api-v2.forager.ai/api/$FORAGER_ACCOUNT_ID/datastorage/feedback/phone_numbers/" \
  -H "X-API-KEY: $FORAGER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone_number": "+12025550142", "contact_status": "connected", "is_correct_person": true, "person_id": 1234567}'
```

```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import os, requests

resp = requests.post(
    f"https://api-v2.forager.ai/api/{os.environ['FORAGER_ACCOUNT_ID']}/datastorage/feedback/phone_numbers/",
    headers={"X-API-KEY": os.environ["FORAGER_API_KEY"]},
    json={"phone_number": "+12025550142", "contact_status": "connected",
          "is_correct_person": True, "person_id": 1234567},
)
resp.raise_for_status()  # 201 Created
```

```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
const resp = await fetch(
  `https://api-v2.forager.ai/api/${process.env.FORAGER_ACCOUNT_ID}/datastorage/feedback/phone_numbers/`,
  {
    method: "POST",
    headers: { "X-API-KEY": process.env.FORAGER_API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({
      phone_number: "+12025550142", contact_status: "connected",
      is_correct_person: true, person_id: 1234567,
    }),
  },
);
if (resp.status !== 201) throw new Error(`Forager returned ${resp.status}`);
```

Phone numbers can be sent in any format; Forager normalizes them to E.164. Personal emails are lowercased and trimmed before storage.

## Responses

| Status | Meaning |
| - | - |
| `201` | Stored. The body echoes the record with its `id` and `date_created`. |
| `400` | Validation failed: an unparseable phone number or email, an unknown `contact_status`, or a missing required field. |
| `403` | Missing or invalid `X-API-KEY`, a key for a different account, or an inactive key user. |
| `429` | Rate limited. The feedback endpoints share a budget of 60 requests per minute per account. |

Feedback requests are free: they don't use credits.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.