> For the complete documentation index, see [llms.txt](https://developer.siteminder.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.siteminder.com/channels-plus-api/guides/quick-start.md).

# Quick Start

Channels Plus connects your booking channel with SiteMinder's distribution platform. Through Channels Plus, your channel can search for available properties, retrieve room and rate details, and manage bookings.

**API components:**

* **Properties**: Search and retrieve property details
* **Property**: Availability, pricing, and room configuration
* **Reservations**: Create, modify, and cancel reservations
* **Deals**: Negotiate competitive rates with properties

{% hint style="success" %}
Explore all components in the [API Overview](/channels-plus-api/guides/api-overview.md).
{% endhint %}

***

## Before You Begin

{% hint style="info" %}
**You don't need to wait for your test environment to start development.** You can begin building and testing immediately. See [Make Your First Call](#make-your-first-call) below or explore requests directly in the [Postman](#explore-with-postman) collection.
{% endhint %}

### Partnership Required

Access to Channels Plus requires an active partnership agreement with SiteMinder. Once your agreement is in place, you will receive your test environment details.

<a href="https://www.siteminder.com/integrations/apply-now/" class="button primary">Become a SiteMinder Partner</a>

### What You'll Receive from SiteMinder

When your integration begins, we'll send you an initiation email asking you to\
complete the Testing Setup form. This allows us to configure your\
access to the Partner Portal, where you'll generate your API ID and API Key.

<table><thead><tr><th width="171.01336669921875">Item</th><th>Details</th></tr></thead><tbody><tr><td>Channel endpoint</td><td><a href="https://tpi-channel-api.preprod.smchannelsplus.com/">https://tpi-channel-api.preprod.smchannelsplus.com/</a></td></tr><tr><td>Export endpoint</td><td><a href="https://tpi-export-api.preprod.smchannelsplus.com/">https://tpi-export-api.preprod.smchannelsplus.com/</a></td></tr><tr><td>Partner Portal</td><td>Access to generate your <code>API ID</code> and <code>API Key</code>, and to create Deals</td></tr></tbody></table>

## Set Up Your Environment

### Authentication

Channels Plus uses **channel-level authentication** — two headers on every request (`API ID` and `API Key`), both generated from the Partner Portal.

```bash
--header 'x-sm-api-id: YOUR_API_ID' \
--header 'x-sm-api-key: YOUR_API_KEY'
```

{% hint style="warning" %}
Keep your `API ID` and `API Key` private. Never expose them in front-end or client-side code. This API is for server-to-server use only.
{% endhint %}

### API Specification File

**REST (OpenAPI)**

* **Channels Plus** — [download YAML](https://openapi.gitbook.com/o/qrJuVY5UOf3h7cLyla8z/spec/channels-plus-api.yaml)
* **Channels Plus Export API** — [download YAML](https://openapi.gitbook.com/o/qrJuVY5UOf3h7cLyla8z/spec/channels-plus-export-api.yaml)

***

## Make Your First Call

The first call every Channels Plus integration must implement is [Get Properties](/channels-plus-api/reference/properties.md) — your channel retrieves a list of available properties from SiteMinder based on location and date criteria.

{% stepper %}
{% step %}

### Authenticate

Pass your `API ID` and `API Key` as headers on every request:

{% code overflow="wrap" expandable="true" %}

```bash
--header 'x-sm-api-id: YOUR_API_ID' \
--header 'x-sm-api-key: YOUR_API_KEY'
```

{% endcode %}

{% hint style="success" %}
Use SiteMinder's shared test credentials to make this call:

* **API ID**: `c258d726-e6fa-47a3-9ae8-e0290484bbe4`
* **API KEY**: `b7d92948-5b0b-4b38-a08e-f1c53eff2947`
* **Credentials** are pre-filled in the [Postman collection](#explore-with-postman) below.
  {% endhint %}
  {% endstep %}

{% step %}

### Make the call

Retrieve available properties by location and date:

{% code overflow="wrap" expandable="true" %}

```bash
curl -L \
  --url 'https://tpi-channel-api.preprod.smchannelsplus.com/properties?latitude=1&longitude=1&checkin=2026-04-07&checkout=2026-04-07' \
  --header 'x-sm-api-id: YOUR_API_ID' \
  --header 'x-sm-api-key: YOUR_API_KEY' \
  --header 'Accept: */*'
```

{% endcode %}
{% endstep %}

{% step %}

### Handle the response

A successful response returns an array of properties matching your search criteria, each including room types, rate plans, pricing, and commission details:

{% code overflow="wrap" expandable="true" %}

```json
[
  {
    "uuid": "text",
    "name": "text",
    "propertyType": { "text": "text", "language": "text" },
    "address": "text",
    "country": "text",
    "latitude": 1,
    "longitude": 1,
    "starRating": 1,
    "currency": "text",
    "totalCommissionPercentage": 1,
    "rooms": [
      {
        "roomRateUuid": "text",
        "ratePlanName": "text",
        "adults": 1,
        "cancellationPolicy": {
          "policyType": "non-refundable",
          "freeCancellationUntilDays": 1
        },
        "prices": [
          {
            "totalPrice": 1,
            "dealCode": "text",
            "totalCommissionPercentage": 1
          }
        ]
      }
    ]
  }
]
```

{% endcode %}
{% endstep %}

{% step %}

### Handle errors

If your API ID or API Key is missing or invalid:

{% code overflow="wrap" expandable="true" %}

```json
{
  "errors": [
    {
      "code": "text",
      "message": "text",
      "meta": {}
    }
  ]
}
```

{% endcode %}

{% hint style="danger" %}
**401** - Check your `x-sm-api-id` and `x-sm-api-key` headers are correct and present on every request.
{% endhint %}

{% code overflow="wrap" expandable="true" %}

```json
{
  "errors": [
    {
      "code": "text",
      "message": "text",
      "meta": {}
    }
  ]
}
```

{% endcode %}

{% hint style="danger" %}
**429** - The number of requests for the last 5 minutes has reached the limit for your channel. Wait before retrying.
{% endhint %}
{% endstep %}
{% endstepper %}

***

## Explore with Postman

SiteMinder's Channels Plus Postman workspace contains collections and environments to help you build, test, and validate your integration for certification. Fork the collections and environments to your own Postman account to get started.

→ [Channels Plus Postman Workspace](https://www.postman.com/siteminder-apis/channels-plus/overview)

### Shared Test Credentials

The **Channels Plus - API TEST** environment is pre-filled with shared test credentials. You can use these immediately — no dedicated test account required — to test.

Shared credentials cover Properties and Property endpoints only. Reservations and Export require your dedicated test account credentials. Update the environment variables with your credentials once your test environment is set up.

{% hint style="info" %}
For full certification scenario coverage, see [Testing and Certification](https://developer.siteminder.com/siteminder-apis/channels/introduction/channels-plus/testing-and-certification).
{% endhint %}

{% hint style="success" icon="sparkles" %}

## Still have questions?

Use the <i class="fa-gitbook-assistant">:gitbook-assistant:</i> **Ask** button at the top of the page to chat with our AI assistant — it can help you navigate the guide, understand requirements, and troubleshoot issues.

If you need more support, visit [Integration Support](/integration-support/integration-support.md).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.siteminder.com/channels-plus-api/guides/quick-start.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
