---
title: "Set Property Once"
method: POST
path: "/engage#profile-set-once"
tags: ["User Profiles"]
---

# Set Property Once

`POST /engage#profile-set-once`

Works just like "$set", except it will not overwrite existing property values. This is useful for properties like "First login date".

## 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

- object[]
  - `$token` string, required
  - `$distinct_id` string, required
  - `$set_once` object, required

## 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)
