---
title: customers.get | Doing Work API
description: One customer with contacts, properties, custom fields and open balance.
url: https://doingwork.work/docs/reference/customers-get/
---

# customers.get

One customer with contacts, properties, custom fields and open balance.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `GET /v1/customers/get` |
| MCP tool | `customers_get` |
| Writes | no |
| Area | [Shop](https://doingwork.work/docs/reference/#shop) |

## When to use it

One customer with contacts, properties, custom fields and open balance.

## What to tell the owner

Tell them what you found in plain words. Don't read back raw fields.

## Input

| Field | Type | Required |
|---|---|---|
| `customer_id` | string (uuid) | yes |

## Example

```http
GET https://doingwork.work/v1/customers/get?customer_id=00000000-0000-4000-8000-000000000000
```

## Output

| Field | Type | Always there |
|---|---|---|
| `customer_id` | string (uuid) | yes |
| `shop_id` | string (uuid) | yes |
| `kind` | string | yes |
| `name` | string | yes |
| `company_name` | ['string', 'null'] | yes |
| `email` | ['string', 'null'] | yes |
| `phone` | ['string', 'null'] | yes |
| `billing_address` | ['object', 'null'] | yes |
| `lead_source` | ['string', 'null'] | yes |
| `tags` | array | yes |
| `notes` | ['string', 'null'] | yes |
| `archived_at` | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
| `merged_into` | ['string', 'null', ' ', '(', 'u', 'u', 'i', 'd', ')'] | yes |
| `erased_at` | ['string', 'null', ' ', '(', 'd', 'a', 't', 'e', '-', 't', 'i', 'm', 'e', ')'] | yes |
| `created_at` | string (date-time) | yes |
| `updated_at` | string (date-time) | yes |
| `contacts` | array | yes |
| `contacts[].contact_id` | string (uuid) | yes |
| `contacts[].name` | string | yes |
| `contacts[].email` | ['string', 'null'] | yes |
| `contacts[].phone` | ['string', 'null'] | yes |
| `contacts[].role` | ['string', 'null'] | yes |
| `contacts[].is_primary` | boolean | yes |
| `properties` | array | yes |
| `properties[].property_id` | string (uuid) | yes |
| `properties[].home_id` | string (uuid) | yes |
| `properties[].label` | ['string', 'null'] | yes |
| `properties[].address_line1` | string | yes |
| `properties[].address_line2` | ['string', 'null'] | yes |
| `properties[].locality` | string | yes |
| `properties[].postal_code` | string | yes |
| `properties[].jurisdiction_id` | string | yes |
| `properties[].access_notes` | ['string', 'null'] | yes |
| `fields` | array | yes |
| `fields[].key` | string | yes |
| `fields[].target` | string | yes |
| `fields[].type` | string | yes |
| `fields[].value` |  | yes |
| `fields[].currency` | ['string', 'null'] | yes |
| `fields[].written_at` | string (date-time) | yes |
| `open_balance_minor` | integer | yes |

```json
{
  "customer_id": "00000000-0000-4000-8000-000000000000",
  "shop_id": "00000000-0000-4000-8000-000000000000",
  "kind": "...",
  "name": "Ruiz Plumbing",
  "company_name": "...",
  "email": "owner@example.com",
  "phone": "...",
  "billing_address": "...",
  "lead_source": "...",
  "tags": [
    "..."
  ],
  "notes": "...",
  "archived_at": "...",
  "merged_into": "00000000-0000-4000-8000-000000000000",
  "erased_at": "...",
  "created_at": "...",
  "updated_at": "...",
  "contacts": [
    {
      "contact_id": "00000000-0000-4000-8000-000000000000",
      "name": "Ruiz Plumbing",
      "email": "owner@example.com",
      "phone": "...",
      "role": "...",
      "is_primary": true
    }
  ],
  "properties": [
    {
      "property_id": "00000000-0000-4000-8000-000000000000",
      "home_id": "00000000-0000-4000-8000-000000000000",
      "label": "...",
      "address_line1": "...",
      "address_line2": "...",
      "locality": "Coeur d'Alene",
      "postal_code": "83814",
      "jurisdiction_id": "00000000-0000-4000-8000-000000000000",
      "access_notes": "..."
    }
  ],
  "fields": [
    {
      "key": "...",
      "target": "...",
      "type": "...",
      "value": "...",
      "currency": "...",
      "written_at": "..."
    }
  ],
  "open_balance_minor": 50000
}
```

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
