---
title: "Set an account Voice Profile override"
method: PUT
path: "/voice-profile-assignments/{account_id}"
tags: ["Voice Profiles"]
---

# Set an account Voice Profile override

`PUT /voice-profile-assignments/{account_id}`

## Request

- Base URL: `https://app.openpo.st/api/v1`
- URL: `https://app.openpo.st/api/v1/voice-profile-assignments/{account_id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `openpost_session`

An empty profile ID restores Workspace inheritance.

## Path parameters

- `account_id` string, required: Connected social account ID

## Request body

- AssignVoiceProfileInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `voice_profile_id` string: Voice Profile override; empty restores Workspace inheritance
  - `workspace_id` string, required: Workspace ID

## Response `200`

OK

- EffectiveProfile
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `account_id` string, required
  - `profile` VoiceProfile, required
    - `$schema` string, uri: A URL to the JSON Schema for this object.
    - `assigned_account_ids` string[], nullable, required
    - `created_at` string, date-time, required
    - `definition` Definition, required
      - `boundaries` string[], nullable: Tone or identity boundaries
      - `corrections` Correction[], nullable: Accepted edits that explain how the voice should change a draft
        - `lesson` string: Optional general lesson from the edit
        - `original` string, required: Generated or draft wording that did not fit
        - `preferred` string, required: Accepted replacement wording
      - `disliked_patterns` string[], nullable: Writing patterns this voice avoids
      - `examples` Example[], nullable: Representative writing examples
        - `platform` string: Optional source platform, used as provenance rather than a style rule
        - `text` string, required: Representative text
        - `why_it_fits` string: Why this example represents the voice
      - `expertise` string[], nullable: Subjects the voice can discuss from experience
      - `forbidden_phrases` string[], nullable: Phrases this voice must not use
      - `formality` string: Formality style and limits
      - `humor` string: Humor style and limits
      - `identity_summary` string: Short description of the person or brand behind the voice
      - `interview_answers` InterviewAnswer[], nullable: Optional answers used to learn opinions and phrasing
        - `answer` string, required: Answer in the profile owner's own words
        - `question` string, required: Interview question
      - `opinions` string[], nullable: Established views the builder may draw on
      - `preferred_language` string: Language or locale this voice normally writes in
      - `recurring_expressions` string[], nullable: Expressions that sound natural in this voice
      - `traits` string[], nullable: Stable voice traits
      - `vocabulary` string[], nullable: Words the voice naturally uses
    - `id` string, required
    - `is_default` boolean, required
    - `name` string, required
    - `revision` integer, required
    - `schema_version` integer, required
    - `updated_at` string, date-time, required
    - `workspace_id` string, required
  - `source` string, required

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/openpo/apis/openpost-api.md) · [All operations](https://skmtc.dev/openpo/apis/openpost-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openpo/apis/openpost-api/revisions/67d3964458a7?raw)
