> ## Documentation Index
> Fetch the complete documentation index at: https://docs.b3os.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate Address

Standardize and verify a free-form US shipping address via the Google Address Validation API. Returns USPS-standardized components (street / unit / city / state / ZIP), a confidence verdict (high / medium / low), whether Google corrected anything, and which components are missing. Ideal for: confirming a deliverable address collected in chat before placing an order, surfacing the corrected form for the user to approve rather than re-type.

Catalog action Integrations

Standardize and verify a free-form US shipping address via the Google Address Validation API. Returns USPS-standardized components (street / unit / city / state / ZIP), a confidence verdict (high / medium / low), whether Google corrected anything, and which components are missing. Ideal for: confirming a deliverable address collected in chat before placing an order, surfacing the corrected form for the user to approve rather than re-type.


## At a Glance

| Field | Value |
| --- | --- |
| Action ID | `validate-address` |
| Category | Integrations |
| Connector | Not required |
| Requires gas | No |
| Funds movement | None declared |
| Tags | `shopping`, `address`, `lookup`, `read` |

## Payload Schema

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `addressLines` | `array` | Yes | Free-form address lines, roughly street-first \(e.g. \["9149 sepulvda blvd", "los angeles 90045"\]\). One combined line is accepted too — Google splits it. |
| `regionCode` | `string` | No | CLDR region code. Only 'US' is supported today \(shipping is US-only\). |

## Result Schema

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `confidence` | `string` | Yes | high = complete, nothing unconfirmed \(safe to ship after user confirm\); medium = complete but Google inferred/replaced/spell-corrected components \(show the corrected form for confirm\); low = incomplete or unconfirmable \(caller should fall back to its own handling\). |
| `corrected` | `boolean` | Yes | True when the standardized address differs materially from what the user typed. |
| `formattedAddress` | `string \| null` | Yes | Google's single-line formatted address \(no recipient name\). |
| `standardized` | `object \| null` | Yes | USPS-standardized components — null when confidence is low. |
| `missingComponents` | `array` | Yes | Google component types the input lacked \(e.g. 'subpremise'\) — useful for a targeted re-ask. |

## Examples

**Workflow node**

```json
{
  "type": "validate-address",
  "payload": {
    "addressLines": [
      "example-addressLines"
    ]
  },
  "children": []
}
```
  **Test with API**

```bash
curl -X POST "https://api.b3os.org/v1/actions/validate-address/test" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "inputs": {
    "addressLines": [
      "example-addressLines"
    ]
  }
}'
```

**Use expressions for dynamic values**

Payload fields can use workflow expressions such as `{{$trigger.body.amount}}`, `{{$nodes.fetch.result.price}}`, and `{{$props.asset}}` when the value should come from a trigger, prior node, or reusable workflow prop.