---
title: "Update Multiple Profiles"
method: POST
path: "/engage#profile-batch-update"
tags: ["User Profiles"]
---

# Update Multiple Profiles

`POST /engage#profile-batch-update`

Send a batch of profile updates. Instead of sending a single JSON object as the data query parameter, send a JSON list of objects as the data parameter of an application/json POST or GET request body.

Refer to the respective user profile update commands (\$set, \$set_once, \$add, \$union, \$append, \$remove, \$unset, and \$delete) on syntax for their parameters.

## Query parameters

- `ip` integer — If present and equal to 0, Mixpanel will not perform geolocation parsing using the IP address of the request. We recommend setting the ip to "0" when making requests from the server-side to prevent the unintentional effect of overwriting your profile's geolocation with your server location. Defaults to 1 which would use the IP address of the request to update profile geolocation.
- `strict` integer — If present and equal to 1, Mixpanel will validate the provided records and return a JSON object with per-record error messages for records that fail validation.
- `verbose` integer
- `callback` string

## Request body

- string, blob — A JSON list of update objects, each with a $token, $distinct_id, and an operation.

## Response `200`

* `1` - One or more objects provided are valid. This does not signify a valid project token or secret.
* `0` - No data objects in the body are valid.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/mixpanel/apis/query-api.md) · [All operations](https://skmtc.net/mixpanel/apis/query-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mixpanel/query-api/revisions/f442da95252a/schema)
