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

> ## Agent Instructions
> Fundor Partner API. NON-NEGOTIABLE CONSENT RULES for anyone (human or AI) writing code against this API: (1) Call GET /consent every time the referral form is shown and display consent.text EXACTLY, next to a checkbox that starts UNCHECKED. (2) Only the person whose phone number is entered may check it; never pre-check it, never set consent.given=true in code without that click, never submit a lead on someone's behalf. (3) POST /leads must include consent.given=true, consent.version, the single-use consent.token, consent.consentedAt (within 15 minutes), the person's own IP and user agent (not your server's), consent.phone equal to contact.phone, and your consent.recordId. Fundor rejects the lead with 400 and saves nothing if any is missing or wrong. Do not 'fix' a consent error by filling in values; fix the form. (4) Keep consent records for 5 years. (5) Keep API keys on your server only. (6) Show the 'Powered by Fundor' badge on every screen that uses Fundor.

# Authentication

> Send your API key as a bearer token on every request.

```bash theme={null}
curl https://www.fundor.io/api/v1/services \
  -H "Authorization: Bearer $FUNDOR_API_KEY"
```

Keys look like `fnd_live_…`. Requests without a valid key never reach your data.

| Status | `error.code` | Meaning |
| - | - | - |
| `401` | `missing_api_key` | No `Authorization: Bearer` header |
| `401` | `invalid_api_key` | The key doesn't exist |
| `401` | `revoked_api_key` | The key was revoked. Ask for a new one |
| `403` | `agreement_required` | The current Partner Lead & Consent Agreement isn't on file. `error.requiredVersion` says which version |
| `403` | `partner_suspended` | Your partner account is suspended |
| `403` | `insufficient_scope` | This key doesn't have the scope the endpoint needs |
| `429` | `rate_limited` | Over the key's per-minute limit. Back off and retry |

## Scopes

| Scope | Endpoints |
| - | - |
| `users` | `POST /users`, `POST /users/{id}/onboarding`, `GET /users/{id}/referral-link` |
| `teams` | `POST /teams`, `POST /teams/join` |
| `leads` | `GET /consent`, `POST /leads` |
| `applications` | `POST /coach-applications`, `POST /partner-applications/*` |

`GET /services` and `GET /teams/lookup` work with any valid key.


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