---
title: "Tamloot — Update contact name, email, or phone"
description: "Update contact name, email, or phone: parameters, request examples, and response schemas for PATCH /v1/contacts/{contact_id}."
canonical: "https://tamloot.cc/en/docs/developers/api-reference/update-contact"
last-updated: "2026-10-18"
---

# Update contact name, email, or phone

`PATCH /v1/contacts/{contact_id}`

Send your API key in the `Authorization: Bearer $TAMLOOT_API_KEY` header. Only data visible to the key owner is accessible.

Based on the published [OpenAPI description](https://tamloot.cc/openapi.json). Schema names and code identifiers are shown exactly as the API defines them.

## Parameters

| Parameter | Location | Required | Type | Constraints |
| --- | --- | --- | --- | --- |
| `contact_id` | path | Yes | string (uuid) | — |

## Request body

```json
{
  "type": "object",
  "additionalProperties": false,
  "minProperties": 1,
  "properties": {
    "full_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "email": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 254,
      "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"
    },
    "phone": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 50
    }
  }
}
```

## Request examples

```bash
curl "https://api.tamloot.cc/v1/contacts/00000000-0000-4000-8000-000000000000" \
  --request PATCH \
  --header "Authorization: Bearer $TAMLOOT_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"full_name":"Maya Cohen"}'
```

```javascript
const response = await fetch("https://api.tamloot.cc/v1/contacts/00000000-0000-4000-8000-000000000000", {
  "method": "PATCH",
  "headers": {
    "Authorization": `Bearer ${process.env.TAMLOOT_API_KEY}`,
    "Content-Type": "application/json"
  },
  "body": "{\"full_name\":\"Maya Cohen\"}"
});
if (!response.ok) throw new Error('HTTP ' + response.status);
const result = await response.json();
```

## Responses

| Status | Meaning |
| --- | --- |
| 200 | Successful response |
| 401 | Missing or invalid API key |
| 403 | Access denied |
| 404 | Record not found or not visible to this account |
| 409 | Duplicate email, archived contact, or retry key conflict |
| 422 | Invalid request parameters |
| 429 | Rate limit exceeded; wait according to Retry-After |
| 503 | Write temporarily unavailable |

### Success response schema

```json
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "object"
    }
  }
}
```

### Error response schema

```json
{
  "type": "object",
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "HTTP status code as a string, e.g. \"404\""
        },
        "message": {
          "type": "string"
        }
      }
    }
  }
}
```

### Response headers

```json
{
  "RateLimit-Limit": {
    "description": "Requests allowed per one-second window.",
    "schema": {
      "type": "integer"
    }
  },
  "RateLimit-Policy": {
    "description": "The rate-limit policy, as `<limit>;w=<window seconds>`.",
    "schema": {
      "type": "string"
    }
  }
}
```

See the [quickstart](/en/docs/developers/quickstart) for API key setup and [API overview](/en/docs/developers/api) for rate limits and versioning.

## Where to look next

- [Tamloot](https://tamloot.cc/en)
- [All guides](https://tamloot.cc/en/docs)
- [llms.txt](https://tamloot.cc/docs/llms.txt)
- [Sitemap](https://tamloot.cc/sitemaps/sitemap.xml)
