Delete your account
Soft-delete your account. All API keys stop working, all environments and resources become unreachable, and the user data is removed (with carve-outs for users who belong to other accounts).
Irreversible
Account deletion is OWNER-only and irreversible. You cannot recover the account or its data through self-service after deletion. If you need to preserve data, export it before proceeding.
Prerequisites: You must be the OWNER. The account must have no active paid items on its subscription — cancel any paid items first; the cancel takes effect at period end, after which the subscription's status becomes CANCELED and the account can be deleted. (You can also wait for the cancel to take effect, or contact support if you need an immediate teardown.)
What deletion does
A single transaction soft-deletes (deleted_at = now()) the account and its dependent rows. Direct children with a deleted_at column are cascaded in one bulk update:
- API keys
- Environments
- Pending invitations
- The subscription and its product items
- Subscription usage records
- Contexts (including services)
- Context types
Then:
- Users that belong exclusively to this account are soft-deleted; users in other accounts retain those memberships.
account_userjoin rows are left in place — the soft-deleted entities they reference make the links effectively dead.resource_countrows for this account are hard-deleted (the table has nodeleted_at).- The account itself is soft-deleted last.
Returns 204. The OWNER's session keeps the JWT for the moment but every subsequent authenticated call returns 404 because the account is filtered out by deleted_at IS NULL.
Cross-service data is not cascaded. Configs, flags, and loggers in their respective product services are tenant-scoped and unreachable once the API keys and account are removed, but the data stays at rest until a future GDPR hard-delete job runs. This is harmless — the row-level security policies block any access — but worth knowing if you're auditing what's still in the database.
Cancel paid items first
Deletion returns 409 Conflict when the subscription has any active item and its status is not yet CANCELED.
# Read the current subscription to see what's enrolled
curl https://app.smplkit.com/api/v1/accounts/current/subscription \
-H "Authorization: Bearer $SMPLKIT_API_KEY"A 404 means there's no subscription at all — you can skip ahead to deletion. Otherwise drop every item with a single PUT:
curl -X PUT https://app.smplkit.com/api/v1/accounts/current/subscription \
-H "Authorization: Bearer $SMPLKIT_API_KEY" \
-H "Content-Type: application/vnd.api+json" \
-d '{
"data": {
"type": "subscription",
"attributes": {"items": []}
}
}'Stripe schedules cancellation at period end. The items continue to show on your subscription with pending_plan_change: "FREE" until then. When Stripe fires customer.subscription.deleted, the subscription and all its items are soft-deleted (subsequent GETs return 404) and the account can be deleted.
If you need an immediate teardown without waiting for the period end, contact support.
Delete the account
In the console
- Go to Account → Settings.
- Scroll to the Danger zone at the bottom.
- Click Delete account.
- Confirm the prompt — the dialog will ask you to type the account key to confirm.
The browser is signed out; trying to load the console returns to the sign-in page.
Via the API
curl -X DELETE https://app.smplkit.com/api/v1/accounts/current \
-H "Authorization: Bearer $SMPLKIT_API_KEY"Returns 204. No request body. The account is resolved from your authenticated session — there's no account ID in the path.
If a paid subscription is still active, returns 409 Conflict.
What happens to other users in the account
Users who only belong to this account are soft-deleted alongside it. If they had an OAuth identity, that identity is detached too.
Users who belong to other accounts (e.g. they're in Acme and ContosoCo) keep their other memberships. Their account_user join row for this account is left in place — the join table has no deleted_at, but the soft-deleted account on the other end of the row makes the link effectively dead.
Verify
curl https://app.smplkit.com/api/v1/accounts/current \
-H "Authorization: Bearer $SMPLKIT_API_KEY"Returns 404 — the account is filtered out by deleted_at IS NULL.
Any API key for the deleted account stops working at the next request. Browsing the console redirects to sign-in.
Related
- Manage subscriptions — cancel paid subscriptions first
- Roles and permissions — only OWNER can delete
- Transfer ownership — if you want to hand off rather than delete
- API Reference — Platform: Accounts

