---
title: "Teach Luca panel state, with confirm-style prompts"
method: GET
path: "/api/teach-luca"
tags: ["Teach Luca"]
---

# Teach Luca panel state, with confirm-style prompts

`GET /api/teach-luca`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/teach-luca`
- Auth: one of:
  - API key in cookie `luca.session_token`
  - API key in header `x-api-key`
  - HTTP bearer

Everything the panel renders. That's which questions are answered, skipped, or still open, the next one to ask, and prompts pre-filled from the coach's own words. It also returns the example DM with the draft as it stands today.

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

## Headers

- `Luca-API-Version` '1'

## Response `200`

ok

- TeachLucaStateResponse
  - `progress` object, required
    - `offer_and_price` 'pending' | 'answered' | 'skipped'
    - `top_objections` 'pending' | 'answered' | 'skipped'
    - `tone_boundaries` 'pending' | 'answered' | 'skipped'
  - `nextQuestion` 'offer_and_price' | 'top_objections' | 'tone_boundaries' | 'null', nullable, required
  - `answered` integer, required
  - `skipped` integer, required
  - `complete` boolean, required
  - `suggestions` object, required
    - `offer` string
    - `priceBand` 'lt_500' | '500_2k' | '2k_5k' | '5k_plus' | 'rather_not_say'
    - `priceDetail` string
    - `objections` object[], required
      - `objection` string, required
      - `response` string, required
    - `boundaries` string[], required
  - `exampleDm` string, nullable, required
  - `exampleDraft` string, nullable, required
  - `maxObjections` 3, required
  - `maxBoundaries` 5, required

## Other responses

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

---

[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)
