> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.pricelabs.co/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.pricelabs.co/_mcp/server.

# Overview

The **RM Partner API** is a REST API for Revenue Management Consultant Partners who manage multiple PriceLabs accounts. It allows you to programmatically access listing data, pricing, reservations, and more across all accounts you manage.

## Base URL

```
https://api.pricelabs.co/rm/v1
```

## Authentication

Send your RM API key as the `X-API-Key` header on every request. You can enable and manage your API key from the **PL Experts Dashboard → Account Settings → API Details**.

For endpoints that operate on a specific customer account, you must also include the `PL-User-Id` header with the target account's `user_id` (obtained from the [List accounts](#list-all-managed-accounts) or [Account lookup](#look-up-account-by-email) endpoints).

```bash
curl -H "X-API-Key: YOUR_RM_API_KEY" \
     -H "PL-User-Id: 12345" \
     https://api.pricelabs.co/rm/v1/listing_data
```

## Available Endpoints

The RM Partner API shares the same endpoint specifications as the [Customer API](/customer-api/api-reference/overview). The only differences are:

1. **Base URL** — Use `/rm/v1` instead of `/v1`
2. **Authentication** — Use your RM API key
3. **Account targeting** — Include the `PL-User-Id` header to specify which managed account to operate on

---

## RM-Specific Endpoints

The following endpoints are exclusive to the RM Partner API and are used to discover and look up managed accounts. These do **not** require the `PL-User-Id` header.

### List all managed accounts

Returns all active PriceLabs accounts managed by the authenticated RM partner.

```
GET /rm/v1/accounts
```

**Headers:**

| Header      | Required | Description             |
| ----------- | -------- | ----------------------- |
| `X-API-Key` | Yes      | Your RM Partner API key |

**Response:**

```json
{
  "accounts": [
    {
      "user_id": 123,
      "email": "owner@example.com",
      "name": "John Doe"
    },
    {
      "user_id": 456,
      "email": "another@example.com",
      "name": "Jane Smith"
    }
  ]
}
```

| Field                | Type    | Description                                                                               |
| -------------------- | ------- | ----------------------------------------------------------------------------------------- |
| `accounts[].user_id` | integer | The account owner's user ID. Use this as the `PL-User-Id` header for subsequent requests. |
| `accounts[].email`   | string  | The account owner's email address.                                                        |
| `accounts[].name`    | string  | The account owner's display name.                                                         |

---

### Look up account by email

Finds a specific managed account by the owner's email address.

```
GET /rm/v1/account_lookup?email={email}
```

**Headers:**

| Header      | Required | Description             |
| ----------- | -------- | ----------------------- |
| `X-API-Key` | Yes      | Your RM Partner API key |

**Query Parameters:**

| Parameter | Required | Description                                       |
| --------- | -------- | ------------------------------------------------- |
| `email`   | Yes      | The email address of the account owner to look up |

**Response (200):**

```json
{
  "user_id": 123,
  "email": "owner@example.com",
  "name": "John Doe"
}
```

**Error Responses:**

| Status | Body                                               | Description                                              |
| ------ | -------------------------------------------------- | -------------------------------------------------------- |
| 400    | `{"error": "email parameter is required"}`         | Missing `email` query parameter                          |
| 403    | `{"error": "Account not found or access denied."}` | No matching account or the account is not managed by you |

---

## Error Codes

| Status | Error Code           | Description                                                           |
| ------ | -------------------- | --------------------------------------------------------------------- |
| 401    | —                    | Missing or invalid `X-API-Key` header                                 |
| 403    | `ERR-CAPI-NO-ACCESS` | API access is not enabled or account is not verified                  |
| 403    | —                    | Access denied for the specified `PL-User-Id` account                  |
| 400    | —                    | Missing required `PL-User-Id` header (for account-specific endpoints) |

## Questions?

Reach out to [support@pricelabs.co](mailto:support@pricelabs.co).