teams

Put one of the business's own people on the team, on the OWNER's word.

Owner, 2026-10-03: "I want to add employees. I want them to have this phone number … so it can communicate with them … we can see the employees, their communication with Stormy." Until this, a person could be added only by an owner's own API call: the desk's key fails team.members.manage, so "add Ana, her cell is …" in chat had no door, and an employee added the ordinary way landed invited with an unverified phone — which caller_authority reads as a STRANGER when she texts the line.

Who may: the owner or an admin directly, or the desk inside a running turn the owner started (schedules._owners_turn, the same proof schedules, the web address and the customer portal use). A customer's text, an employee's own text and a clock all resolve to another tier and get a 403 — nothing a person who is not the owner says can put someone on the team.

What it grants: an ACTIVE internal membership with role member — never admin, never a capability — and the contacts as VERIFIED, vouched for by the owner (verification_evidence.provider = "owner"). That is what makes her text a teammate's turn instead of a stranger's, and what lets the desk text her without customer consent evidence (communication_evidence_gate). Idempotent on the contact: someone already on the team is returned as is.

post/v1/teams/{team_id}/staff

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}/staff
  • Auth: none declared

Path parameters

team_idstring uuid required

Headers

authorizationstring nullable
x-darwin-tokenstring nullable

Request body

idempotency_keystring required
namestring required
phonestring nullable
emailstring nullable

Response

Successful Response

object required

Changes