Brand Voice
The Brand Voice service lets you create, manage, and apply brand voices to ensure consistent tone and style across all generated content.
Concepts
Brand Voices
A brand voice defines how your content should sound — including tone, vocabulary, formatting rules, and writing style. Brand voices can be:
- Created manually with detailed style settings
- Imported from URLs, documents, or text descriptions using AI analysis
- Duplicated from existing brand voices
- Upgraded for enhanced quality using AI
Brands
Brands represent the company or product associated with a brand voice. They contain contact information, social media links, and brand values.
DS Prompt
Each brand voice can generate a "DS prompt" — a formatted system prompt that can be passed to the content generation API to apply the brand voice to generated text.
Endpoints
All endpoints use the base path: https://app.neuroflash.com/api/brand-voice-service
Brand Voices
| Method | Endpoint | Description |
|---|---|---|
POST | /v1/workspaces/{id}/brand-voices | Create a brand voice |
GET | /v1/workspaces/{id}/brand-voices | List brand voices |
GET | /v1/workspaces/{id}/brand-voices/{id} | Get a brand voice |
PUT | /v1/workspaces/{id}/brand-voices/{id} | Update a brand voice |
DELETE | /v1/workspaces/{id}/brand-voices/{id} | Delete a brand voice |
POST | /v1/workspaces/{id}/brand-voices/{id}/duplicate | Duplicate a brand voice |
POST | /v1/workspaces/{id}/brand-voices/{id}/ds-prompt | Get DS prompt for content generation |
POST | /v1/workspaces/{id}/brand-voices/{id}/upgrade | Upgrade brand voice quality |
Brands
| Method | Endpoint | Description |
|---|---|---|
POST | /v1/workspaces/{id}/brands | Create a brand |
GET | /v1/workspaces/{id}/brands | List brands |
GET | /v1/workspaces/{id}/brands/{id} | Get a brand |
PUT | /v1/workspaces/{id}/brands/{id} | Update a brand |
DELETE | /v1/workspaces/{id}/brands/{id} | Delete a brand |
Imports
The three import endpoints analyse your content and return a brand voice proposal.
No data is written to your workspace until you call POST /brand-voices with the
extracted fields. See the Persisting an Import Draft
section for the complete two-step workflow.
| Method | Endpoint | Description |
|---|---|---|
POST | /v1/workspaces/{id}/brand-voice-text-imports | Import from text |
POST | /v1/workspaces/{id}/brand-voice-url-imports | Import from URL |
POST | /v1/workspaces/{id}/brand-voice-file-imports | Import from file |
Importing Brand Voices
All three import endpoints (URL, text, file) share three required parameters beyond workspaceId that are easy to get wrong:
| Parameter | Type | Description |
|---|---|---|
country | string | 2-letter lowercase country code (e.g. us, de, gb) |
language | string | 2-letter lowercase language code (e.g. en, de, fr) |
audienceModelId | string | Audience embedding model ID — use the default value below if unsure |
Default audienceModelId: 538b1efc6f88ad88feebf7acd8c618facb54fe82
Allowed locale pairs
country and language must form a valid pair. The API validates this server-side and returns a 400 error if the combination is not allowed. Supported pairs:
country | Valid language values |
|---|---|
us | en |
gb | en |
uk | en |
de | de |
at | de |
ch | de, fr |
fr | fr |
es | es, ca |
mx | es |
it | it |
nl | nl |
pl | pl |
pt | pt |
br | pt |
se | sv |
tr | tr |
hu | hu |
hr | hr |
cz | cs |
cn | zh |
Safe defaults: use country: "us", language: "en" for English content or country: "de", language: "de" for German content.
Example: Import from URL
curl -X POST "https://app.neuroflash.com/api/brand-voice-service/v1/workspaces/{workspace_id}/brand-voice-url-imports" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-brand.com",
"country": "us",
"language": "en",
"audienceModelId": "538b1efc6f88ad88feebf7acd8c618facb54fe82"
}'