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

# API conventions

> Apply consistent rules for identifiers, pagination, dates, money, and response compatibility.

## Base request

All routes are relative to `https://pamm-api.example.com` and require the CRM bearer credential. JSON requests use UTF-8.

## Identifiers are not interchangeable

* Use internal `master.id` with `GET` and `PATCH /api/v1/master/{master_id}`.
* Use `mt5_login` with funding, assignment, relationship, balance, and sensitive information routes.
* Keep `payment_account_login` separate from the Master's trading login.
* Persist `subscription.id` for relationship reconciliation even when later queries use account logins.

## Money and rates

* Treat amounts as decimal values and avoid binary floating point in accounting code.
* Deposits and withdrawals require a positive amount of at least `0.01`.
* The default operational currency is `USD`.
* Performance fee rates range from `0` to `1`; `0.30` represents 30%.

## Dates and time

Exchange timestamps in ISO 8601 and interpret operational schedules in UTC. The automatic weekly performance fee run begins Saturday at 00:00 UTC; MT5 settlement may finish later.

## Pagination

Pagination is endpoint-specific; do not apply one cursor algorithm to every route.

| Endpoint or mode | Request | Response / next step |
| - | - | - |
| Master/Investor directory with `engine=PAMM` | `page=1&limit=50` | `items`, `total`, `page`, `has_more`; increment `page`. |
| Directory with `engine=ALL` | `limit` and optional opaque `cursor` | Reuse `next_cursor` while `has_more` is true. |
| `/info/subscriptions` without `page` | Filters and optional `limit` | Flat array; no page metadata. |
| `/info/subscriptions` with `page` | `page=1&page_size=50` | `items`, `total`, `page`, `page_size`, `has_more`. |
| `/perf-fee/transactions` | `offset=0&limit=5` | `items`, `total`, `has_more`; advance `offset` by the item count. |
| `/perf-fee/master/{master_login}/investor-payments` | Optional numeric `cursor`, `limit` | Returns item IDs below the cursor; use `next_cursor`. |
| Investor payments with `group_by=investor` | `group_by=investor` | Full `totals`, empty `items`; no pagination. |

For example, a PAMM directory page is:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "items": [],
  "next_cursor": null,
  "has_more": false,
  "total": 0,
  "page": 1
}
```

Use the returned `next_cursor` only on endpoints that actually implement cursor pagination. It is a legacy null field on payment-credit transactions.

## Required, omitted, and null fields

Required JSON fields must be present. Omitted fields can use defaults or retain existing values depending on the endpoint; explicit `null` is not necessarily equivalent to omission. Request tables describe these differences.

Always send `default_perf_fee` explicitly when creating or registering a Master. Current tenant variants that allow omission default it to zero; stricter versions require it. PF is a decimal fraction, not an integer percentage. Decimal responses can be strings; do not rely on numeric JSON formatting for accounting.

The Master default and the persisted Investor fee setting are separate. At assignment, omitted or null `perf_fee` and `perf_fee.rate=0` inherit the default. When supplying the object, `rate` is required; `enabled=false` disables collection even with an inherited rate. Later updates to the Master do not automatically propagate to existing Investors. Older deployments may require `perf_fee`; see [assignment compatibility](https://pamm-api.exuratech.com/reference/subscriptions.md#fee-initialization-rules).

## Forward compatibility

Examples show only the fields that belong to this external integration contract. The service can return additional properties. Ignore unknown response fields and depend only on documented properties.

> [card] [Previous: Errors](https://pamm-api.exuratech.com/reliability/errors.md)
>
> Return to safe failure handling.

> [card] [Next: Endpoint index](https://pamm-api.exuratech.com/reference/endpoint-index.md)
>
> Browse the complete CRM-facing route catalog.


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