PATCH/api/v6/urlshortener/links/{domain}/{code}

Actualizar un enlace corto

Cambia el destino, el estado o el vencimiento. El dominio y el código no cambian.

Alcance y límites

Alcance

API key con el servicio urlshortener habilitado y la capacidad urlshortener.write concedida

Límite de uso

35 solicitudes por segundo

Cambia la URL de destino (longUrl, que se revalida como al crear), el estado (status) o el vencimiento (expiresAt). Envía solo lo que quieras cambiar; hace falta al menos un campo. El dominio y el código no se pueden cambiar: romperían todas las URL cortas ya repartidas. Editar no tiene costo.

Cada cambio queda registrado con el valor anterior, el nuevo y quién lo hizo (la API key o el usuario del portal). Un enlace bloqueado por Hablame (status: blocked) no se puede editar: responde 409 LINK_BLOCKED.

Las claves que no reconoce se ignoran: un cuerpo como {"active": false} (del contrato anterior) no cambia nada y responde 400 NOTHING_TO_UPDATE. Para desactivar, envía {"status": "disabled"}.

Pide una key que pueda escribir

Además del servicio urlshortener, la API key necesita la capacidad urlshortener.write, y solo la concede un propietario o un administrador de tu organización al crear la key. Sin ella, la key lista y consulta enlaces, estadísticas, el resumen, los dominios y la tarifa, y aquí recibe 403 AUTH_CAPABILITY_NOT_ALLOWED.

Parámetros de ruta

domain
stringobligatorio
Dominio del enlace, tal como lo devuelve la API en domain. Se compara en minúsculas. Nombra al enlace que hoy responde en esa URL corta; para uno de un dominio que ya no es de tu organización (domainStatus: released), añade domainStatus=released.
code
stringobligatorio
Código o alias del enlace. Se compara en minúsculas.

Parámetros de consulta

domainStatus
stringopcional
Con released, el enlace es el de un dominio que ya no es de tu organización (el que la lista devuelve con domainStatus: released), aunque ese nombre sea hoy el de otro dominio con el mismo código. Sin él, domain nombra al dominio que hoy se llama así. Otro valor responde 400 VALIDATION_INVALID_PARAMETER.
released

Cuerpo de la petición

application/json
longUrl
stringopcional
Nueva URL de destino. Mismas reglas que al crear.
status
stringopcional
disabled deja de redirigir de inmediato (el visitante recibe 404); active lo vuelve a encender.
activedisabled
expiresAt
stringopcional
Nuevo vencimiento, siempre futuro. Sin zona horaria se lee en hora de Colombia (-05:00). null o cadena vacía lo quitan.
{
  "status": "disabled"
}

Respuestas

200

Enlace actualizado, tal como quedó.

{
  "success": true,
  "data": {
    "domain": "h0b.co",
    "code": "a1b2c3d",
    "shortUrl": "https://h0b.co/a1b2c3d",
    "longUrl": "https://example.com/landing?utm_source=sms",
    "isAlias": false,
    "status": "active",
    "domainStatus": "active",
    "expiresAt": null,
    "createdAt": "2026-09-23T15:04:05Z",
    "clicks": 0,
    "uniqueClicks": 0,
    "firstClickAt": null,
    "lastClickAt": null
  },
  "meta": {
    "requestId": "8f0c0e2a4b1d4c8fae2b7a91e0c5d3f6",
    "timestamp": "2026-09-23T18:30:00+00:00",
    "responseTimeMs": 7.2
  }
}
400

No se envió nada que cambiar, un campo no tiene el tipo correcto, o un valor es inválido.

401

Credenciales inválidas o faltantes.

403

La API key no tiene habilitado el acortador (o está apagado para tu organización), no tiene la capacidad urlshortener.write para crear y editar enlaces, no se puede usar desde la red de la petición, o la organización no está activa.

404

No existe un enlace de tu organización con ese dominio y código (o fue eliminado). Un enlace de otra organización también responde 404: no se revela que exista.

409

El enlace está bloqueado por Hablame y no se puede cambiar.

429

Se excedió el límite de solicitudes.

Errores posibles

Códigos que este endpoint puede devolver en error.code. El detalle completo está en el catálogo.

Ver el catálogo completo
PATCH /api/v6/urlshortener/links/{domain}/{code}
curl -X PATCH 'https://developers.hablame.co/api/v6/urlshortener/links/h0b.co/a1b2c3d' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer hk_TU_API_KEY' \
  -H 'Content-Type: application/json' \
  --data '{"status":"disabled"}'

Try-It

Ejecuta la petición contra la API real con tu propia API key.

La key se usa solo en tu navegador para esta petición. No se guarda ni se envía a ningún otro lado.

Parámetros

Dominio del enlace, tal como lo devuelve la API en domain. Se compara en minúsculas. Nombra al enlace que hoy responde en esa URL corta; para uno de un dominio que ya no es de tu organización (domainStatus: released), añade domainStatus=released.

Código o alias del enlace. Se compara en minúsculas.

Con released, el enlace es el de un dominio que ya no es de tu organización (el que la lista devuelve con domainStatus: released), aunque ese nombre sea hoy el de otro dominio con el mismo código. Sin él, domain nombra al dominio que hoy se llama así. Otro valor responde 400 VALIDATION_INVALID_PARAMETER.

Cuerpo de la petición

Nueva URL de destino. Mismas reglas que al crear.

disabled deja de redirigir de inmediato (el visitante recibe 404); active lo vuelve a encender.

Nuevo vencimiento, siempre futuro. Sin zona horaria se lee en hora de Colombia (-05:00). null o cadena vacía lo quitan.

PATCH https://developers.hablame.co/api/v6/urlshortener/links/h0b.co/a1b2c3d

Respuesta

Todavía no has enviado ninguna petición.