convert_property
Change a property's kind without losing values.
/v1/properties/{propertyDefId}/convertThe kind changes that keep every stored value: singleSelect to checkbox (each value becomes a one-item list), checkbox to singleSelect (refused while any spot holds more than one option), shortLabel to longSection and back (long to short only when every value fits one line). Use it when one answer per spot turns out to be too few (entry free on foot but a timed car park booking). Any other change is a new property plus archive_property on the old one. For a one-line qualifier next to a value, use update_spot customNotes instead.
curl -X POST "https://sceniq.earth/api/v1/properties/kh75t2w9q4r6y8v0j1p3p5a7s9d1f3g5/convert" \
-H "Authorization: Bearer $SCENIQ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"toKind": "checkbox"
}'Path parameters
- propertyDefIdstring · property idrequired
Id of the property definition (from
list_properties).
Body parameters
- toKindstringrequired
The new kind: checkbox,
singleSelect,shortLabelorlongSection(see the allowed pairs above).shortLabelcheckboxsingleSelectnumberdatelongSection
Returns
200 OK with this object.
- okbooleanrequired
Always true: the write went through.
Always
true - propertyDefIdstring · property idrequired
The property's id.
- kindstringrequired
The property's new kind.
- schemaVersionnumberrequired
The guide's property schema version after the change.
- spotsChangednumberrequired
Spots whose stored value changed shape.
{
"ok": true,
"propertyDefId": "kh75t2w9q4r6y8v0j1p3p5a7s9d1f3g5",
"kind": "checkbox",
"schemaVersion": 9,
"spotsChanged": 12
}Errors
Every error is { error: { code, message } }. Act on the code.
- 400invalid_argumentA required field is missing, a field is unknown, or a value does not match its type (the Convex validator's path and value are in the message).
- 400invalid_requestA writer refused a value: a map link on a host that is not allowed, a title that is too long, a date that does not exist, too many items in a list. The message is the writer's own sentence.
- 401unauthenticatedThe request carries no key. Send it as Authorization: Bearer sk_sceniq_... (or X-Api-Key).
- 401invalid_api_keyThe key is unknown, revoked or expired.
- 403api_scope_requiredA read-only key called a write operation, or a key without the publish option called publish_changes.
- 403forbiddenThe key belongs to a creator account that is no longer active.
- 404not_foundThe id does not exist or belongs to another creator. The two answers are identical on purpose, so ids never reveal what exists.
- 413payload_too_largeA JSON body over 2 MB, an image over 6 MB, a batch upload over 19 MB, or an MCP message over 2 MB.
- 429rate_limitedOver a limit: requests per key per minute, per creator per hour, uploads per key per minute, or check_links per guide per hour.
- 500internal_errorAn unexpected failure. The message is hidden on purpose.