---
title: "Geocode Addresses"
method: POST
path: "/v1/teams/{team_id}/geo/geocode"
tags: ["geo"]
---

# Geocode Addresses

`POST /v1/teams/{team_id}/geo/geocode`

## 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}/geo/geocode`
- Auth: none declared

Addresses to coordinates, many at once, remembered for a week.

A dispatcher's day is the same few hundred addresses asked again and again,
and `drive-time` geocodes both ends on every call. Geocode the day's stops
ONCE here, then hand `lat,lng` pairs to `drive-time`, `route` and
`drive-matrix` and nothing is looked up twice. An address that cannot be
found is its own row (`ok: false`, `error`), never a failed request.

## Path parameters

- `team_id` string, uuid, required

## Headers

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

## Request body

- GeocodeAddressesRequest
  - `addresses` string[], required
  - `provider` 'google' | 'simulation', nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

## Changes

> 68 revisions in range; 1 not diffed.

- **2026-10-02** `146c9ac992af`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/geo/geocode/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/a40e83844eaa?raw)
