---
title: "Onboarding Reach"
method: GET
path: "/v1/teams/{team_id}/onboarding/reach"
tags: ["onboarding"]
---

# Onboarding Reach

`GET /v1/teams/{team_id}/onboarding/reach`

## Request

- Base URL: `https://api.stormy.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stormy.ai/v1/teams/{team_id}/onboarding/reach`
- Auth: none declared

WHERE HE TEXTS STORMY (owner, 2026-10-11: "stormy has a phone number and it has slack not exclusive").

Stormy's own number (`system_phone.py`) — a text to it from an owner's verified mobile reaches that
owner's own workspace (`operations/system_conversation.py`). `reaches` asks the very lookup the routing
asks, so the first screen can never promise a text the number would drop.

THE SCREEN MUST ASK HIM TO TEXT IT (owner, same day: "during onboarding we MUST ask the user to
message stormy at the phone number"), and nine in ten owners have no verified mobile, so an owner
also gets `code`: the text the screen opens carries it and links the mobile it comes from
(`operations/system_number_link.py`). `texted_at` / `answered` are what the screen watches to say
his text arrived and Stormy answered it; `linked_suffix` is the mobile a code linked.

## Path parameters

- `team_id` string, uuid, required

## Headers

- `authorization` string, nullable
- `x-darwin-token` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

## Changes

> 68 revisions in range; 1 not diffed.

- **2026-10-12** `93655953beee`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/onboarding/reach/get.md)

---

[API](https://skmtc.dev/stormy/apis/stormy-control-plane.md) · [All operations](https://skmtc.dev/stormy/apis/stormy-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/stormy/apis/stormy-control-plane/revisions/a40e83844eaa?raw)
