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

# Introduction

> Getting started with the RenovationFind Internal Manager API

# Internal Manager API

The Internal Manager API provides programmatic access to RenovationFind administrative
operations. It is designed for integration with AI agents and internal tooling.

## Base URL

All API requests are made to:

```
https://www.renovationfind.com/rest-manager-api-v1
```

## Response Format

All responses use a consistent envelope:

```json theme={null}
{
  "success": true,
  "data": { },
  "message": "Optional message"
}
```

On error:

```json theme={null}
{
  "success": false,
  "error": "Error description"
}
```

## Rate Limits

API requests are rate-limited to **250 requests per 5 minutes** per manager.

When exceeded, the API returns `429 Too Many Requests` with a `Retry-After: 300` header.

## Partial Updates

All `PATCH` endpoints accept partial payloads. Only fields you include in the request
body are updated — omitted fields remain unchanged. This makes it safe for AI agents
to target specific fields without risk of overwriting unrelated data.

Date fields use `dd/MM/yyyy` format (e.g., `"15/03/2026"`).

### Clearing a field

The API uses a "null means skip" convention: if a field is `null` or absent in the
request body, it is **not** modified. This means you cannot set a field to `null` by
sending `null` explicitly — it will be treated the same as omitting the field.

To **clear** a field's value:

| Field type  | How to clear                                                  | Example                    |
| ----------- | ------------------------------------------------------------- | -------------------------- |
| **String**  | Send an empty string `""`                                     | `{"salesEmail": ""}`       |
| **Date**    | Send an empty string `""`                                     | `{"insuranceExpires": ""}` |
| **Boolean** | Set to `false` (booleans are always true/false, not nullable) | `{"activated": false}`     |
| **Number**  | Cannot be cleared via PATCH — contact support if needed       | —                          |

<Warning>
  Sending `{"email": null}` does **not** clear the email field — it is ignored.
  Use `{"email": ""}` instead.
</Warning>
