# Detalles MED

Consulta los detalles completos de un proceso MED (Mecanismo Especial de Devolucion) especifico.

## Endpoint

```
GET /api/external/med/:id
```

## Headers

| Header | Tipo | Obligatorio | Descripcion |
|--------|------|-------------|-------------|
| `Authorization` | String | Si | `ApiKey {client_id}:{client_secret}` |
| `X-Key-Case` | String | No | Defina como `camelCase` para recibir los campos de la respuesta en camelCase (default es snake_case) |

## Path Parameters

| Parametro | Tipo | Obligatorio | Descripcion |
|-----------|------|-------------|-------------|
| `id` | String | Si | Identificador del proceso MED |

## Ejemplo

```bash
curl -X GET https://api.monetarie.com/api/external/med/MED20260307001 \
  -H "Authorization: ApiKey $CLIENT_ID:$CLIENT_SECRET"
```

## Respuesta de Exito (200)

```json
{
  "worked": true,
  "med": {
    "id": "MED20260307001",
    "type": "REFUND_REQUEST",
    "status": "ACKNOWLEDGED",
    "amount": 50000,
    "original_end_to_end_id": "E46026562202603071530000001",
    "reason": "Fraude reportada pelo pagador",
    "created_at": "2026-03-07T18:00:00Z"
  }
}
```

::: tip Status en UPPERCASE
Valores posibles: `ACKNOWLEDGED`, `CLOSED`, `CANCELLED`. Repasados tal como recibidos del provider PIX (PIX/BACEN) - sin normalizacion. Ver [med-list](/es/med-list#status-del-med) para detalles.
:::

| Campo | Tipo | Descripcion |
|-------|------|-------------|
| `worked` | Boolean | `true` indica exito en la operacion |
| `med.id` | String | Identificador unico del MED |
| `med.type` | String | Tipo: `REFUND_REQUEST` o `REFUND_CANCELLED` |
| `med.status` | String | Status actual del proceso (`ACKNOWLEDGED`, `CLOSED`, `CANCELLED`) |
| `med.amount` | Integer | Valor en **unidades base** (÷ 10.000 para reales). `50000` = R$ 5,00 |
| `med.original_end_to_end_id` | String | E2E de la transaccion PIX original. Use para cruzar con `GET /transactions/ref/:external_id` |
| `med.reason` | String | Motivo informado por el solicitante (texto libre). `null` si no disponible |
| `med.created_at` | String | Fecha de apertura (ISO 8601 UTC) |

::: info Campos adicionales no expuestos via External API
El proveedor PIX/BACEN retorna mas campos que los expuestos por este endpoint. Los campos filtrados deliberadamente en el serializer incluyen:

| Campo (provedor) | Descripcion | Donde obtener hoy |
|---|---|---|
| `analysisResult` | Decision final: `AGREED` o `DISAGREED` | Webhook [`pix.infraction.resolved`](/es/webhooks-payloads#pix-infraction-resolved) |
| `analysisDetails` | Justificativa de la decision | Webhook [`pix.infraction.resolved`](/es/webhooks-payloads#pix-infraction-resolved) |
| `infractionType` | `REFUND_REQUEST` o `REFUND_CANCELLED` | Ya expuesto en `med.type` |
| `fraudType` | `SCAM`, `ACCOUNT_TAKEOVER`, `COERCION`, `FRAUDULENT_ACCESS`, `OTHER` | Webhook `pix.refund.requested` (campo `fraud_category`) |
| `situationType` | Tipo de situacion involucrada (BACEN taxonomy) | Exhibido en el portal cuando aplica |
| `defenseDeadline` | Plazo BACEN para envio de defensa | Webhook [`pix.infraction.created`](/es/webhooks-payloads#pix-infraction-created) |

Para integracion programatica, use los webhooks listados en esta pagina y los endpoints publicos de consulta y defensa MED.

Ver [Infracciones (flujo completo)](/es/infractions) para entender la relacion entre MED e Infracciones.
:::

::: warning Valor en subcentavos, no en BRL
El campo `amount` es en **subcentavos** (1 BRL = 10.000 subcentavos). Valor `50000` = R$ 5,00 - **no** R$ 50.000. Nunca multiplique por 100 ni use float.
:::

## Respuesta de Error (404)

```json
{
  "worked": false,
  "errors": {
    "not_found": "MED não encontrado"
  }
}
```

::: info 404 puede indicar error transitorio
Si el MED existe en otro canal (webhook, listado anterior) pero retorna 404 en esta consulta, puede ser falla transitoria del proveedor PIX. Intente nuevamente en algunos segundos. Si persiste despues de 5 min, contacte al soporte.

El backend convierte todos los errores del proveedor (incluyendo timeouts y errores de red) en HTTP 404 con `detail: "MED nao encontrado"`. Para distinguir "no existe" de "falla transitoria", consulte primero el endpoint [Listar MED](/es/med-list) - si el ID aparece en el listado pero el detail retorna 404, es transitorio.
:::

## Respuesta de Error (401)

```json
{
  "worked": false,
  "errors": {
    "unauthorized": "Missing API key credentials. Use Authorization: ApiKey <client_id>:<client_secret>"
  }
}
```

::: tip Acompanamiento en tiempo real (webhooks)
Los eventos de webhook `pix.refund.requested` y `pix.refund.completed` **SON disparados automaticamente** por el backend a partir de abril/2026. Recomendado suscribir esos webhooks para no depender de polling. Polling en `GET /med/:id` o `GET /med` continua funcionando como alternativa.
:::
