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

# Quick Start

> Send your first guest check-in in under 5 minutes.

This guide walks you through your first API calls — from verifying your credentials to checking in and checking out a test guest.

## Prerequisites

Before you start, make sure you have:

* An **API key** (either `pms_live_` or `pms_test_` prefix)
* The **hotel slug** (e.g., `grand-hotel`)

Both are provided by the hotel administrator. See [Authentication](/api/pms/authentication) for details.

<Tip>
  **Use a test key first.** If you have a `pms_test_` key, use it for this tutorial. Test keys validate your payloads but don't write any data to the hotel's system. You can switch to the live key when you're ready for production.
</Tip>

## Step 1: Verify Your Credentials

Start by listing current guests. This confirms your API key and slug are working:

```bash theme={null}
curl -X GET https://app.recepai.ai/api/pms/v1/grand-hotel/guests \
  -H "Authorization: Bearer pms_test_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
```

**Expected response (200 OK):**

```json theme={null}
{
  "guests": [],
  "count": 0,
  "requestId": "req_a1b2c3d4"
}
```

If you get a `401` error, double-check your API key and slug. See [Authentication Errors](/api/pms/authentication#authentication-errors).

## Step 2: Check In a Guest

Send a check-in event with the required fields:

```bash theme={null}
curl -X POST https://app.recepai.ai/api/pms/v1/grand-hotel/guests/checkin \
  -H "Authorization: Bearer pms_test_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: test_checkin_001" \
  -d '{
    "pmsGuestId": "TEST-001",
    "firstName": "John",
    "lastName": "Doe",
    "phone": "+905551234567",
    "roomNumber": "301",
    "checkInDate": "2026-02-18",
    "checkOutDate": "2026-02-22",
    "language": "en"
  }'
```

**Expected response (200 OK):**

```json theme={null}
{
  "status": "created",
  "guestId": "test_abc123",
  "pmsGuestId": "TEST-001",
  "roomNumber": "301",
  "requestId": "req_test_b2c3d4",
  "_sandbox": true
}
```

<Info>
  The `_sandbox: true` flag appears only with test keys. It confirms that no real data was written. With a live key, this flag won't be present and the guest will appear on the hotel's dashboard immediately.
</Info>

## Step 3: Verify the Guest

List guests again to confirm the check-in was recorded:

```bash theme={null}
curl -X GET https://app.recepai.ai/api/pms/v1/grand-hotel/guests \
  -H "Authorization: Bearer pms_test_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
```

With a **test key**, the list will still be empty (test mode doesn't write data). With a **live key**, you'd see your guest in the response.

## Step 4: Check Out the Guest

When the guest departs, send a checkout event:

```bash theme={null}
curl -X POST https://app.recepai.ai/api/pms/v1/grand-hotel/guests/checkout \
  -H "Authorization: Bearer pms_test_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: test_checkout_001" \
  -d '{
    "pmsGuestId": "TEST-001"
  }'
```

**Expected response (200 OK):**

```json theme={null}
{
  "status": "checked_out",
  "guestId": "test_abc123",
  "pmsGuestId": "TEST-001",
  "roomNumber": "301",
  "requestId": "req_test_c3d4e5",
  "_sandbox": true
}
```

## What's Next?

You've completed the basic flow. Here's where to go from here:

<CardGroup cols={2}>
  <Card title="Check In" icon="right-to-bracket" href="/api/pms/checkin">
    Full field reference for guest check-in — all 12 fields, validation rules, error responses.
  </Card>

  <Card title="Full Sync" icon="arrows-rotate" href="/api/pms/sync">
    Nightly reconciliation — send your complete guest list and RecepAI handles the rest.
  </Card>

  <Card title="Error Handling" icon="triangle-exclamation" href="/api/pms/errors">
    All error codes, validation rules, and common mistakes.
  </Card>

  <Card title="Testing" icon="flask" href="/api/pms/testing">
    Sandbox mode, idempotency keys, and rate limits.
  </Card>
</CardGroup>
