Los clientes deben depender de códigos de error estables y no de texto humano.
Formato común
Cada error devuelve un objeto error con código estable, mensaje legible y request_id.
{
"error": {
"code": "provider_capability_not_supported",
"message": "Connected account has no tasks support.",
"request_id": "req_123"
}
}Conflictos y etags
Los clientes deben ramificar por código, no por el mensaje.
bad_request: input inválido o campo faltante.unauthorized: API key ausente o inválida.forbidden: la key no tiene scope o una política de sesión bloquea la acción.not_found: el recurso no existe en el alcance actual de organización/aplicación.conflict: etag vencido, conexión revocada o autorización incompleta.provider_capability_not_supported: la cuenta conectada no puede realizar la acción solicitada.rate_limited: el presupuesto por key se agotó. LeeRetry-After(segundos) y el headerx-ratelimit-remaining, luego reintenta con backoff.