Skip to main content

/i/app_users/delete

Endpoint

/i/app_users/delete

Overview

Delete app users by query and clean linked data.

Authentication

  • API Key (parameter): api_key=YOUR_API_KEY
  • Auth Token (parameter): auth_token=YOUR_AUTH_TOKEN
  • Auth Token (header): countly-token: YOUR_AUTH_TOKEN

Permissions

  • Requires write-level app access.

Request Parameters

ParameterTypeRequiredDescription
api_keyStringYes (or use auth_token)Dashboard API authentication key.
auth_tokenStringYes (or use api_key)Dashboard auth token.
app_idStringYesTarget app ID.
queryJSON String (Object)YesQuery selecting users to delete. Must be non-empty.
forceBoolean/StringNoRequired when query matches more than one user.

Response

Success Response

{
"result": "User deleted"
}

Response Fields

FieldTypeDescription
resultStringDeletion status message.

Error Responses

Status Code: 400 Bad Request

{
"result": "Missing parameter \"app_id\""
}

Status Code: 400 Bad Request

{
"result": "Missing parameter \"query\""
}

Status Code: 400 Bad Request

{
"result": "Could not parse parameter \"query\": {bad-json}"
}

Status Code: 400 Bad Request

{
"result": "No users matching criteria"
}

Status Code: 400 Bad Request

{
"result": "Parameter \"query\" cannot be empty, it would delete all users. Use clear app instead"
}

Status Code: 400 Bad Request

{
"result": "This query would delete more than one user"
}

Status Code: 500 Internal Server Error

{
"result": {
"errorMessage": "User deletion failed. Failed to delete some data related to this user."
}
}

Status Code: 400 Bad Request

{
"result": "Missing parameter \"api_key\" or \"auth_token\""
}

Behavior/Processing

Behavior Modes

ModeTriggerProcessing PathResponse Shape
Single-user deleteQuery matches exactly one userCollects affected user data, runs plugin cleanup, deletes user and related artifacts.Wrapped string: { "result": "User deleted" }
Multi-user deleteQuery matches more than one user and force is providedExecutes same cleanup and deletion flow for all matched users.Wrapped string: { "result": "User deleted" }
Multi-user blockedQuery matches more than one user and force is missingRequest is rejected before delete.Wrapped error string: { "result": "This query would delete more than one user" }
Plugin cleanup failureAny integrated feature cleanup failsCore deletion is aborted and returns deletion-failed error.Wrapped object: { "result": { "errorMessage": "..." } }

Impact on Other Data

  • Deletes granular drill events for removed users from countly_drill.drill_events.
  • Removes export artifacts linked in appUserExport (including countly.exports export rows).
  • Deletes user image files for removed users when picture links exist.

Audit & System Logs

ActionTriggerPayload
app_user_deletedAfter successful app-user deletion flow{ app_id, query, uids }

Database Collections

CollectionUsed forData touched by this endpoint
countly.membersAuthentication and permission validationReads member identity and app-level write permissions.
countly.app_users{appId}Primary user deletion targetReads matched users (including uid, picture, appUserExport) and removes matched user documents.
countly_drill.drill_eventsGranular-event cleanupDeletes granular event rows for removed user IDs.
countly.exportsExport payload cleanupDeletes export rows tied to removed users' export artifacts.
countly_fsExport archive cleanupRemoves app-user export archive objects when linked exports exist.

Examples

Example 1: Delete single app user

/i/app_users/delete?api_key=YOUR_API_KEY&app_id=64b0ac10c2c3ce0012dd1001&query={"uid":"1"}
{
"result": "User deleted"
}

Operational Considerations

  • Multi-user deletion can be expensive because it runs plugin cleanup, granular-event cleanup, export cleanup, and file cleanup.
  • Deletion may partially fail due to plugin cleanup dependencies; in that case the endpoint returns an error and logs details for operators.

Limitations

  • Empty queries are explicitly blocked.
  • Multi-user delete requires explicit force.
  • Deletion can fail when plugin-level cleanup fails for matched users.

Last Updated

2026-02-17