Get the rpId migration of a connection
GET /v1/connections/{connection_id}/rp-id-migration · permission connections:read
Returns the latest rpId migration of a passkey connection, whether it is still running or already closed (see Change the passkey rpId). The counts are written when the migration closes and are null while it is active. Reads are not audited.
Request
| Field | Type | Required | Description |
|---|---|---|---|
connection_id |
path | yes | Passkey connection ID (conn_…). |
Response
200 OK:
{
"id": "rpm_01j9xr4a6b8c0d2e4f6g8h0j2k",
"connection_id": "conn_01j9xp6q0r1s5t7v9w1x3y5z7b",
"previous_rp_id": null,
"new_rp_id": "login.example.com",
"status": "completed_early",
"started_at": "2026-10-27T10:00:00Z",
"ends_at": "2027-01-25T10:00:00Z",
"completed_at": "2026-12-01T09:00:00Z",
"revoked_count": 12,
"new_registration_count": 340,
"fallback_enabled_by_migration": false
}
| Field | Description |
|---|---|
status |
active, completed (the window ended) or completed_early. |
revoked_count |
Passkeys on the previous rpId that were revoked when the migration closed. |
new_registration_count |
Passkeys registered on the new rpId during the window. |
Errors
| HTTP | code | When |
|---|---|---|
| 404 | not_found |
The connection does not exist in this environment, is not a passkey connection, or has never had an rpId migration. |
| 401 | unauthenticated |
The credential is missing, invalid or revoked. |
| 403 | insufficient_permissions |
The credential lacks the required permission. |
| 429 | rate_limited |
The rate limit was exceeded; retry after the Retry-After period. |
| 503 | service_unavailable |
A dependency is temporarily unavailable; retry after the Retry-After period. |
Example
curl "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/rp-id-migration" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth connections rp-id-migration conn_01j9xp6q0r1s5t7v9w1x3y5z7b