---
title: "Read append-only sales outcome history for a booking"
method: GET
path: "/api/bookings/{id}/outcome/history"
tags: ["Bookings"]
---

# Read append-only sales outcome history for a booking

`GET /api/bookings/{id}/outcome/history`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/bookings/{id}/outcome/history`
- Auth: one of:
  - API key in cookie `luca.session_token`
  - API key in header `x-api-key`
  - HTTP bearer

Every outcome ever recorded on this booking, in order. The log only appends, so a correction adds an event instead of rewriting the old one. That's what tells you who changed the outcome, and when.

**API key scopes:** `bookings:read`.

## Path parameters

- `id` string, uuid, required

## Headers

- `Luca-API-Version` '1'

## Response `200`

ok

- SalesEpisodeHistoryResponse
  - `episode` object, required
    - `id` string, uuid, required
    - `leadId` string, uuid, required
    - `status` 'open' | 'won' | 'lost', required
    - `outcomeReportedAt` string, date-time, nullable, required
    - `amountMinor` integer, nullable, required
    - `currency` string, nullable, required
    - `lossReasonDefinitionId` string, uuid, nullable, required
    - `lossReasonCode` string, nullable, required
    - `lossReasonLabel` string, nullable, required
    - `note` string, nullable, required
    - `nextFollowUpAt` string, date-time, nullable, required
    - `followUpTimezone` string, nullable, required
    - `closedAt` string, date-time, nullable, required
    - `version` integer, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `events` object[], required
    - `status` 'open' | 'won' | 'lost', required
    - `outcomeReportedAt` string, date-time, nullable, required
    - `amountMinor` integer, nullable, required
    - `currency` string, nullable, required
    - `lossReasonDefinitionId` string, uuid, nullable, required
    - `lossReasonCode` string, nullable, required
    - `lossReasonLabel` string, nullable, required
    - `note` string, nullable, required
    - `nextFollowUpAt` string, date-time, nullable, required
    - `followUpTimezone` string, nullable, required
    - `closedAt` string, date-time, nullable, required
    - `version` integer, required
    - `eventId` string, uuid, required
    - `episodeId` string, uuid, required
    - `sourceBookingId` string, uuid, nullable, required
    - `sourceConversationId` string, uuid, nullable, required
    - `kind` 'created' | 'reported_open' | 'won' | 'lost' | 'corrected' | 'reopened', required
    - `actor` 'coach' | 'ask_luca' | 'system_import', required
    - `actorId` string, nullable, required
    - `previousStatus` 'open' | 'won' | 'lost' | 'null', nullable, required
    - `effectiveAt` string, date-time, required
    - `createdAt` string, date-time, required

## Other responses

- `401`: unauthorized
- `404`: not found
- `429`: rate limited
- `500`: internal error

---

[API](https://skmtc.dev/setluca/apis/luca-api.md) · [All operations](https://skmtc.dev/setluca/apis/luca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/setluca/apis/luca-api/revisions/90a200e4100b?raw)
