---
title: "Resolve effective Voice Profiles"
method: POST
path: "/voice-profiles/effective"
tags: ["Voice Profiles"]
---

# Resolve effective Voice Profiles

`POST /voice-profiles/effective`

## Request

- Base URL: `https://app.openpo.st/api/v1`
- URL: `https://app.openpo.st/api/v1/voice-profiles/effective`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `openpost_session`

Resolves Publication override, account override, then Workspace default in that order.

## Request body

- ResolveEffectiveVoiceProfilesInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `account_ids` string[], nullable, required: Connected account IDs in requested order
  - `publication_voice_profile_id` string: Temporary Publication-level override
  - `workspace_id` string, required: Workspace ID

## Response `200`

OK

- EffectiveProfile[], nullable
  - `$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
- `409`: Conflict
- `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)
