/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
API key con el servicio urlshortener habilitado y la capacidad urlshortener.write concedida
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
domaindomain. 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.codeParámetros de consulta
domainStatusreleased, 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.releasedCuerpo de la petición
application/jsonlongUrlstatusdisabled deja de redirigir de inmediato (el visitante recibe 404); active lo vuelve a encender.activedisabledexpiresAt-05:00). null o cadena vacía lo quitan.{
"status": "disabled"
}Respuestas
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
}
}No se envió nada que cambiar, un campo no tiene el tipo correcto, o un valor es inválido.
Credenciales inválidas o faltantes.
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.
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.
El enlace está bloqueado por Hablame y no se puede cambiar.
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.
AUTH_REQUIREDNo se envió un token Bearer y cada llamada lo requiere.401AUTH_INVALID_KEYLa API key no se reconoce: formato equivocado, revocada o vencida.403AUTH_SERVICE_NOT_ALLOWEDLa key no tiene permitido el servicio detrás de este endpoint.403AUTH_IP_NOT_ALLOWEDLa key solo funciona desde ciertas redes y tu IP no está entre ellas.403ACCOUNT_NOT_ACTIVETu organización está suspendida o cerrada.403AUTH_CAPABILITY_NOT_ALLOWEDLa key tiene el servicio, pero no la capacidad que exige este endpoint.400NOTHING_TO_UPDATENo se envió ningún campo actualizable.400VALIDATION_INVALID_PARAMETERUn parámetro o un campo del cuerpo no es válido.400URL_INVALIDLa URL de destino está mal formada.400URL_SCHEME_NOT_ALLOWEDSolo se admiten destinos http y https.400URL_TOO_LONGLa URL de destino supera el largo máximo.400URL_BLOCKED_HOSTEl host de destino es privado o reservado.400EXPIRES_AT_INVALID`expiresAt` debe ser una fecha ISO futura.404LINK_NOT_FOUNDNo hay un enlace con ese dominio y código.409LINK_BLOCKEDEl enlace está bloqueado por seguridad.429RATE_TPS_EXCEEDEDExcediste el cupo de tu organización para este endpoint.