---
title: "Competitors"
method: POST
path: "/v1/teams/{team_id}/onboarding/competitors"
tags: ["onboarding"]
---

# Competitors

`POST /v1/teams/{team_id}/onboarding/competitors`

Poll durable Pi research; never fall back to unreviewed nearby listings.

## Path parameters

- `team_id` string, uuid, required

## Query parameters

- `retry_key` string, uuid, nullable

## Headers

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

## Request body

- DemoScriptAsk — The shop, as much of it as the caller happens to hold yet. EVERY FIELD IS OPTIONAL AND THAT IS THE CONTRACT. The film starts on the typeahead row — a name, an address, a kind — and `geo/business/profile` lands a second later with the hours, the number and the reviews. Requiring the richer half would make this arrive after the scene it was written for, which is the same as not arriving.
  - `place_id` string
  - `name` string
  - `address` string
  - `kind` string
  - `phone` string
  - `hours` string[]
  - `reviews` string[]

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

## Changes

> 33 revisions in range; 1 not diffed.

- **2026-09-07** `1b89bdf08462` — 1 info
  - added the new optional `query` request parameter `retry_key`
- **2026-09-05** `f1c8ed62c117` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/onboarding/competitors/post.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/52151384d62a?raw)
