---
title: "Editar un remitente"
method: PATCH
path: "/senders/{id}"
tags: ["addresses"]
---

# Editar un remitente

`PATCH /senders/{id}`

## Request

- Base URL: `https://api.enviadores.com.mx/api/v1`
- URL: `https://api.enviadores.com.mx/api/v1/senders/{id}`
- Auth: HTTP bearer

Actualización PARCIAL de un remitente visible. Requiere scope `addresses:write`. Solo los campos presentes cambian; se debe enviar al menos uno. Los requeridos pueden cambiarse pero no vaciarse; los opcionales aceptan `null` para limpiarse. Los apellidos NO forman parte del dedupe, así que `PATCH` es la forma de completarlos en una fila creada sin ellos. 404 idéntico para inexistente y no-visible (sin oráculo).

## Path parameters

- `id` string, required

## Headers

- `X-PDV-ID` string

## Request body

- SenderUpdateRequest: Actualización PARCIAL: solo los campos presentes cambian. Se debe enviar al menos uno. Un campo requerido (`name`/`phone`/`street`/`colonia`/`city`/`state`/`postal_code`) puede cambiarse pero NO vaciarse. Campos opcionales aceptan `null` para limpiarse. Campos desconocidos → 422. Si la edición dejaría la dirección idéntica a OTRA visible → 409 `DUPLICATE_ADDRESS`.
  - `name` string
  - `apellido_paterno` string, nullable: DEPRECATED (2026-09-21): el nombre completo va en `name`. Aún se acepta y se integra a `name` al guardar.
  - `apellido_materno` string, nullable: DEPRECATED (2026-09-21): el nombre completo va en `name`. Aún se acepta y se integra a `name` al guardar.
  - `company` string, nullable
  - `rfc` string, nullable
  - `phone` string
  - `email` string, email, nullable
  - `street` string
  - `number` string, nullable
  - `colonia` string
  - `city` string
  - `state` string
  - `postal_code` string
  - `country` 'MX'

## Response `200`

El remitente actualizado.

- object
  - `success` unknown, required
  - `data` object, required
    - `sender` Sender, required: Recurso remitente. Su `id` sirve como `from_id` en `POST /rates` y `POST /shipments`.
      - `id` string, required
      - `name` string, nullable, required
      - `apellido_paterno` unknown, required
      - `apellido_materno` unknown, required
      - `company` string, nullable, required
      - `rfc` string, nullable, required
      - `phone` string, nullable, required
      - `email` string, nullable, required
      - `street` string, nullable, required
      - `number` string, nullable, required
      - `colonia` string, nullable, required
      - `city` string, nullable, required
      - `state` string, nullable, required
      - `postal_code` string, nullable, required
      - `created_at` string, nullable, required: ISO-8601 UTC (Z).
  - `requestId` string, required: Correlación de logs; también en el header `X-Request-Id`.

## Other responses

- `401`: `UNAUTHORIZED` — credencial Bearer ausente/mal formada o llave desconocida/revocada (respuesta idéntica en ambos casos).
- `403`: `INSUFFICIENT_SCOPE` — a la llave le falta el scope requerido · `PDV_NOT_ALLOWED` — violación del carril X-PDV-ID. Nota de orden: el limitador por llave corre ANTES del gate de scope, así que una petición con scope incorrecto y el bucket agotado responde `429 RATE_LIMITED` (el 429 tiene precedencia sobre este 403).
- `404`: `NOT_FOUND` — ruta desconocida, recurso ajeno/inexistente, o la API pública no está habilitada (respuestas indistinguibles por diseño).
- `409`: `DUPLICATE_ADDRESS` — la edición dejaría este remitente idéntico a OTRO ya visible para la llave. La fila no se modifica.
- `422`: `VALIDATION_ERROR` (details.fields) — campo desconocido, requerido vaciado, `country` ≠ MX, apellido (deprecated) > 50, o cuerpo sin campos editables.
- `429`: `RATE_LIMITED` — bucket de la llave agotado. Espera `Retry-After` s (`details.retry_after_ms` para el hint fino). El limitador corre antes del gate de scope, por lo que un 429 tiene precedencia sobre un 403 `INSUFFICIENT_SCOPE`.
- `500`: `SERVER_ERROR` — falla interna (p. ej. lectura de base de datos). Es transitoria; reintenta con backoff.

---

[API](https://skmtc.dev/enviadores/apis/enviadores-public-api.md) · [All operations](https://skmtc.dev/enviadores/apis/enviadores-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/enviadores/apis/enviadores-public-api/revisions/3633f08c889c?raw)
