---
title: "Sign waiver"
method: POST
path: "/api/v1/rentals/{rentalId}/waiver/{guestId}/sign"
tags: ["Waivers"]
---

# Sign waiver

`POST /api/v1/rentals/{rentalId}/waiver/{guestId}/sign`

## Request

- Base URL: `http://localhost:3002`
- URL: `http://localhost:3002/api/v1/rentals/{rentalId}/waiver/{guestId}/sign`
- Auth: none required

Records a guest's signature for their waiver. On success, the server stamps `userAgent` and `ipAddress` into `signatureData`. Public endpoint — no authentication required.

## Path parameters

- `rentalId` string, required
- `guestId` string, required

## Request body

- object
  - `signatureData` object, required
    - `typedName` string, required: Guest's typed name as their signature.
    - `agreedAt` string, date-time, required: ISO 8601 timestamp of when the guest agreed.

## Response `200`

Waiver signed.

- object
  - `data` Guest
    - `id` string, required
    - `rentalId` string, required
    - `waiverTemplateId` string, nullable
    - `firstName` string, required
    - `lastName` string, required
    - `email` string, email, required
    - `phone` string, nullable
    - `isCharterer` boolean, required
    - `waiverStatus` 'PENDING' | 'SENT' | 'SIGNED', required
    - `waiverSentAt` string, date-time, nullable
    - `waiverSignedAt` string, date-time, nullable
    - `signatureData` string, nullable

## Other responses

- `400`: Bad request — `VALIDATION_ERROR` if the request body is invalid, or `ALREADY_SIGNED` if the waiver has already been signed.
- `404`: Rental, guest, or waiver not found.

---

[API](https://skmtc.dev/chartercaptain/apis/charter-captain-api.md) · [All operations](https://skmtc.dev/chartercaptain/apis/charter-captain-api/llms.txt) · [OpenAPI document](https://skmtc.dev/chartercaptain/apis/charter-captain-api/revisions/1ffea1113adb?raw)
