Your own Voice
Customize voice after server-side Jev review
Use this endpoint from your own integration, with the same account permissions and safeguards as the app.
Request
PUT
/api/v1/voice/{accountId}/preferencesExample requestcURL
curl -X PUT 'https://postlift.io/api/v1/voice/{accountId}/preferences' \
-H "Authorization: Bearer $POSTLIFT_API_KEY" \
-H 'Idempotency-Key: integration-operation-0001' \
-H 'Content-Type: application/json' \
--data '{
"expectedRevision": 0,
"preferences": {}
}'Replace path placeholders with your Postlift resource IDs. Example timestamps must be replaced with a future time; preserve the same timestamp when retrying the same operation.
Parameters
| Name | Location | Description |
|---|---|---|
accountIdrequired | path | Postlift resource ID belonging to the API key owner. |
Idempotency-Keyrequired | header | Unique operation key. Reuse only for the same payload/account. See retry semantics in the guide.Pattern: ^[A-Za-z0-9_-]{8,128}$. |
Request body
Send JSON with Content-Type: application/json.
| Field | Type & constraints | ||||||||
|---|---|---|---|---|---|---|---|---|---|
expectedRevisionrequired | integerMinimum: 0. Maximum: 9007199254740991. | ||||||||
preferencesrequired | objectNested fields ↓
|
View JSON schema
{
"type": "object",
"properties": {
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"preferences": {
"type": "object",
"properties": {
"language": {
"type": "string",
"minLength": 2,
"maxLength": 40
},
"instructions": {
"type": "string",
"maxLength": 1500
},
"avoid": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
}
},
"additionalProperties": false
}
},
"required": [
"expectedRevision",
"preferences"
],
"additionalProperties": false
}Response
200 Successful operation.
| Field | Type & constraints |
|---|---|
preferencesrequired | VoicePreferences ↗ |
revisionrequired | integer |
View JSON schema
{
"type": "object",
"properties": {
"preferences": {
"$ref": "#/components/schemas/VoicePreferences"
},
"revision": {
"type": "integer"
}
},
"required": [
"preferences",
"revision"
],
"additionalProperties": true
}Errors & retries
Failures use a stable error code and request ID. Check the current resource version or request status before retrying a write.
| Status | Meaning |
|---|---|
400 | Invalid input or Jev rejection |
401 | Invalid, expired or revoked API key |
402 | Plan, publishing quota or AI credit requirement |
403 | Missing scope |
404 | Resource not found or not owned |
409 | Version conflict, missing voice or duplicate AI operation |
413 | Payload too large |
429 | Rate or concurrency limit |
500 | Internal error |
502 | Upstream failure; inspect operation status |
503 | Service or review unavailable |