Skip to content

Change the current account's password

POST
/v1/account/password
curl --request POST \
--url https://api.aetherpush.com/v1/account/password \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "currentPassword": "example", "newPassword": "example" }'

Dashboard sessions only. Verifies the current password, stores the new one and signs out the account’s other browser sessions; the calling session, CLI credentials and named access keys stay. Outstanding password-reset links and pending CLI authorization requests are voided in the same transaction. The second factor is untouched. A wrong current password answers 400 with a field error rather than 401, so a signed-in client is never evicted by a typo. Two failure budgets answer 429: ten per hour per account and client address, and twenty per hour per account across all addresses. A confirmation email follows. An account with a deletion scheduled receives the plain 403 described on accessKeyAuth.

Media typeapplication/json
object
currentPassword
required

The password the account signs in with today.

string
newPassword
required

Must differ from the current password and pass the same rules as registration, 128 characters at most.

string
>= 12 characters

Example generated

{
"currentPassword": "example",
"newPassword": "example"
}

The password was changed and the other browser sessions were signed out.

Media typeapplication/json
object
sessionsRemoved
required

Browser sessions of the account that were signed out, the calling session excluded.

integer

Example

{
"sessionsRemoved": 1
}

Missing fields answer a plain error. A wrong current password, a new password that fails the strength rules, or one equal to the current password answer a validation error naming the field.

Media typeapplication/json
One of:
Error

Standard error envelope. code is the stable machine identifier for client branching and i18n. The wording of error is a human-readable fallback and is not part of the contract. Specialized responses keep narrower code enums where clients already branch on them.

object
error
required

Human-readable error message.

string
code
required

Stable machine code. Prefer this over matching on error. The values this API can answer with are listed in the ApiErrorCode schema of the raw document at https://api.aetherpush.com/openapi.yaml. The field stays an open string here so that a release adding a value does not invalidate this response.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string

Example

{
"error": "The requested resource was not found.",
"code": "not_found",
"requestId": "req_abc123"
}

Authentication required.

Media typeapplication/json
Error

Standard error envelope. code is the stable machine identifier for client branching and i18n. The wording of error is a human-readable fallback and is not part of the contract. Specialized responses keep narrower code enums where clients already branch on them.

object
error
required

Human-readable error message.

string
code
required

Stable machine code. Prefer this over matching on error. The values this API can answer with are listed in the ApiErrorCode schema of the raw document at https://api.aetherpush.com/openapi.yaml. The field stays an open string here so that a release adding a value does not invalidate this response.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string

Example

{
"error": "The requested resource was not found.",
"code": "not_found",
"requestId": "req_abc123"
}

API keys and named access keys receive a plain 403. A login session that is not a dashboard login session receives code dashboard_session_required.

Media typeapplication/json
Any of:
Error

Standard error envelope. code is the stable machine identifier for client branching and i18n. The wording of error is a human-readable fallback and is not part of the contract. Specialized responses keep narrower code enums where clients already branch on them.

object
error
required

Human-readable error message.

string
code
required

Stable machine code. Prefer this over matching on error. The values this API can answer with are listed in the ApiErrorCode schema of the raw document at https://api.aetherpush.com/openapi.yaml. The field stays an open string here so that a release adding a value does not invalidate this response.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string

Example

{
"error": "This operation requires a login session. API keys and named access keys cannot access it.",
"code": "session_required",
"requestId": "req_abc123"
}

The account no longer exists.

Media typeapplication/json
Error

Standard error envelope. code is the stable machine identifier for client branching and i18n. The wording of error is a human-readable fallback and is not part of the contract. Specialized responses keep narrower code enums where clients already branch on them.

object
error
required

Human-readable error message.

string
code
required

Stable machine code. Prefer this over matching on error. The values this API can answer with are listed in the ApiErrorCode schema of the raw document at https://api.aetherpush.com/openapi.yaml. The field stays an open string here so that a release adding a value does not invalidate this response.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string

Example

{
"error": "The requested resource was not found.",
"code": "not_found",
"requestId": "req_abc123"
}

Too many failed requests. Two budgets apply, and either one answers 429: ten per hour per account and client address, and twenty per hour per account across all addresses. Both are reached only after the session guards and the pending-deletion freeze have admitted the caller, so the 401 and the 403s above, which those produce, spend nothing. Everything this route answers past them spends a unit on both budgets: a wrong current password, a new password that fails the strength rules or equals the current one, a malformed body and a vanished account. A successful change spends nothing. The tenant management limiter can also answer 429, with RateLimitErrorResponse (error, retryAfterSeconds) and Retry-After, before those budgets.

Media typeapplication/json
One of:
Error

Standard error envelope. code is the stable machine identifier for client branching and i18n. The wording of error is a human-readable fallback and is not part of the contract. Specialized responses keep narrower code enums where clients already branch on them.

object
error
required

Human-readable error message.

string
code
required

Stable machine code. Prefer this over matching on error. The values this API can answer with are listed in the ApiErrorCode schema of the raw document at https://api.aetherpush.com/openapi.yaml. The field stays an open string here so that a release adding a value does not invalidate this response.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string

Examples

The ten-per-hour budget for this account and address

{
"error": "Too many password attempts. Please try again later.",
"code": "too_many_password_attempts"
}

Internal server error.

Media typeapplication/json
Error

Standard error envelope. code is the stable machine identifier for client branching and i18n. The wording of error is a human-readable fallback and is not part of the contract. Specialized responses keep narrower code enums where clients already branch on them.

object
error
required

Human-readable error message.

string
code
required

Stable machine code. Prefer this over matching on error. The values this API can answer with are listed in the ApiErrorCode schema of the raw document at https://api.aetherpush.com/openapi.yaml. The field stays an open string here so that a release adding a value does not invalidate this response.

string
requestId

Unique identifier for the request, also exposed as the X-Request-Id response header.

string

Example

{
"error": "The requested resource was not found.",
"code": "not_found",
"requestId": "req_abc123"
}