Link Authorization Already Outstanding
URI: https://docs.ankatech.co/errors/federated-link-intent-already-declared
HTTP Status: 409 Conflict
When you see this
An authorization to link this account is already outstanding, and an existing authorization is never replaced. That is deliberate: if a repeated request silently replaced the previous one, it would extend the window the authorization was granted for, and nothing in the audit trail would show that the window had moved.
The refusal is raised on the declare leg of federated account linking, POST /api/v3/admin/tenants/{tenantId}/users/{userId}/federated-link-intent. Nothing was written: no intent exists, no notification was sent, and the target account is unchanged.
This refusal is reachable on the ordinary path — a stale console view, or a second click after a declare that did not visibly land. It is not a sign that anything is wrong with the account.
It is a different 409 from Account Already Bound: that one says the account already carries a federated subject, this one says an authorization is already waiting. The remedies differ — unlink versus withdraw — so a client that cannot tell them apart sends the operator to the wrong one.
Common Causes
- A link intent for this account was declared earlier and has not yet been consumed, withdrawn, or expired.
- The declare request was submitted twice — a double click, or a retry after a response that never reached the browser.
- The console view predates another administrator's declare on the same account.
Response Example
{
"type": "https://docs.ankatech.co/errors/federated-link-intent-already-declared",
"title": "Link Authorization Already Outstanding",
"status": 409,
"detail": "An authorization is already outstanding for this account. Withdraw it before authorizing a new one — an existing authorization is never replaced, so that a repeated request cannot silently extend the window it was granted for.",
"instance": "/api/v3/admin/tenants/2f1c9d84-6b2e-4d3a-9f57-0a1b2c3d4e5f/users/8c4f1a02-77d5-4e19-b3ac-51e6d9f0a742/federated-link-intent",
"timestamp": 1730000000,
"extensions": {
"requestId": "550e8400-e29b-41d4-a716-446655440000"
}
}
Content-Type: application/problem+json — the response follows RFC 9457 Problem Details. This is an Admin API body, so the correlation identifier is extensions.requestId; see Error Index & Overview.
How to Resolve
- Refresh the account view. An outstanding authorization is shown there, with the window it was granted for.
- If the outstanding authorization is the one you intended, wait for it to be consumed — nothing further is needed.
- If it is wrong, or you need a fresh window, withdraw it and declare again.
For full schema definitions, examples, and interactive testing, see the Developer Hub Reference.