Writer
Writer is an API for configurable AI writing profiles that produce content through iterative drafting and editing. Define a writer profile once with your style guide, quality thresholds, and content rules, then start jobs against it to generate consistent, high-quality content at scale. The drafter-editor loop refines output until it meets your quality bar, and optional humanization removes AI patterns from the final result.
Key Benefits
- Configurable writing profiles: Create reusable writer configurations with style guides, banned language, example banks, and quality settings that apply consistently across every job
- Iterative refinement: A drafter-editor loop scores content against your quality threshold and feeds back targeted guidance until the content meets the bar or the maximum edit passes is reached
- Structured output: Define a JSON schema and get structured data back -- product descriptions, metadata, templated fields -- instead of plain prose
- Research integration: Pass pre-gathered research context to inform the writing, enabling a Deep Research to Writer pipeline or any research-to-content workflow
- Content guardrails: Banned language lists, constitution rules, and an example bank give you precise control over what the writer produces and avoids
- Quality control: Set a quality threshold (0--1), evaluation dimensions, and maximum edit passes to balance quality against processing time
- Humanization: Optional post-processing removes AI writing patterns from the final draft using the Humanize API
Quick Example
# Step 1: Create a writer profile
curl -X POST https://api.feeds.onhelix.ai/writers \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "blog-writer",
"styleGuide": "Write in a conversational tone. Use short paragraphs. Avoid jargon.",
"qualityThreshold": 0.7,
"maxEditPasses": 3
}'
# Step 2: Start a writing job
curl -X POST https://api.feeds.onhelix.ai/writers/{writerId}/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Write a 600-word blog post about the benefits of async communication for remote teams.",
"jobId": "blog-async-comms-001"
}'
# Step 3: Retrieve the result (after polling status to completion)
curl "https://api.feeds.onhelix.ai/writers/{writerId}/jobs/{jobId}" \
-H "Authorization: Bearer YOUR_API_KEY"
See the Quickstart Guide for a complete walkthrough.
How It Works
Writer Profiles
Writer profiles are reusable configurations that define how content should be written. Create a profile once and start any number of jobs against it. All fields except name are optional -- start minimal and add configuration as needed.
A profile captures:
- Style guide: Instructions for tone, voice, formatting, and vocabulary
- Quality settings:
qualityThresholdandevaluationDimensionsdefine what "good enough" means - Content rules: Banned language, constitution rules, and an example bank
- Processing settings:
maxEditPasses, whether to humanize output, and structured output schema
The Writing Loop
Each writing job runs through an orchestrator that coordinates the drafter and editor:
- The orchestrator receives the job prompt and the writer profile configuration
- The drafter produces content based on the prompt, style guide, and any research or tone context provided
- The editor evaluates the draft against the
qualityThresholdand configuredevaluationDimensions - If quality is below the threshold, the editor provides targeted feedback and the drafter revises
- The loop repeats until quality meets the threshold or
maxEditPassesis reached (default: 3) - The final draft is returned, optionally post-processed by the Humanize API if
humanizeis enabled
The default quality threshold is 0.7 (70%). The default maximum edit passes is 3.
Structured Output
When structuredOutputSchema is set on a writer profile, the writer produces JSON conforming to that schema instead of plain prose. This enables product descriptions, metadata extraction, and templated content generation.
Example schema:
{
"type": "object",
"properties": {
"title": { "type": "string" },
"summary": { "type": "string" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["title", "summary", "tags"]
}
Example response:
{
"success": true,
"data": {
"status": "completed",
"structuredContent": {
"title": "The Case for Async Communication",
"summary": "Async communication reduces interruptions, supports distributed teams across time zones, and creates a written record that keeps everyone aligned.",
"tags": ["remote work", "async", "communication", "productivity"]
},
"outline": { ... },
"metadata": { ... }
}
}
Research Integration
The research parameter passes pre-gathered research to the drafter as context. The toneContext parameter provides per-job tone guidance that supplements the profile's style guide.
Research can come from the Deep Research API or any external source. A typical pipeline:
- Run a Deep Research job to gather information on a topic
- Pass the research output as the
researchparameter to a Writer job - The drafter uses the research to produce accurate, informed content
Neither research nor toneContext modifies the writer profile -- they are scoped to the individual job.
Per-Job Overrides
The overrides parameter lets you override writer profile settings for a single job without modifying the profile. This is useful for one-off adjustments to quality or processing settings.
{
"prompt": "Write a detailed technical comparison of three database architectures.",
"overrides": {
"maxEditPasses": 5,
"qualityThreshold": 0.9
}
}
Any field supported in the writer profile can be overridden at the job level.
Use Cases
Blog posts and articles:
curl -X POST https://api.feeds.onhelix.ai/writers/{writerId}/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Write a 800-word article on how small businesses can use AI to improve customer service.",
"jobId": "article-ai-customer-service-2026"
}'
SEO content with formatting rules:
curl -X POST https://api.feeds.onhelix.ai/writers/{writerId}/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Write an SEO-optimized page for our project management software targeting small teams.",
"overrides": {
"styleGuide": "Include H2 subheadings. Use bullet points for feature lists. Target keyword: project management for small teams."
}
}'
Product descriptions with structured output:
curl -X POST https://api.feeds.onhelix.ai/writers/{writerId}/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Write a product description for a wireless noise-canceling headphone with 30-hour battery life and foldable design.",
"jobId": "product-desc-headphones-sku-8821"
}'
Brand-consistent copywriting with guardrails:
# Create a writer with strict brand rules
curl -X POST https://api.feeds.onhelix.ai/writers \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "brand-copy",
"styleGuide": "Warm, approachable, and direct. Use active voice. Speak to the reader as a peer.",
"bannedLanguage": ["leverage", "synergy", "utilize", "seamless", "robust"],
"exampleBank": [
"We built this for teams that move fast and need tools that keep up.",
"No setup fees. No long-term contracts. Just software that works."
],
"humanize": true
}'
Research-informed writing (Deep Research to Writer pipeline):
curl -X POST https://api.feeds.onhelix.ai/writers/{writerId}/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Write a 1000-word explainer on recent advances in battery technology for electric vehicles.",
"research": "... (output from a Deep Research job) ...",
"jobId": "ev-battery-explainer-march-2026"
}'
Processing Time
Typical processing times vary by content length, quality settings, and whether humanization is enabled:
| Content Type | Max Edit Passes | Expected Time |
|---|---|---|
| Short (< 500 words) | 3 (default) | 1--3 minutes |
| Medium (500--1500 words) | 3 (default) | 2--5 minutes |
| Long (> 1500 words) | 3 (default) | 3--8 minutes |
| High quality (threshold > 0.9) | 5--10 | 5--15 minutes |
Factors affecting time:
- Content complexity and length
- Number of edit passes required to meet the quality threshold
- Quality threshold setting (higher thresholds may require more passes)
- Whether
humanizeis enabled (adds post-processing time)
Limits and Considerations
| Limit | Value |
|---|---|
| Max name length | 256 characters |
| Max style guide | 10,000 characters |
| Max prompt | 100,000 characters |
| Max research | 100,000 characters |
| Max array items | 100 per array, 1,000 characters each |
| Max edit passes | 1--50 (default 3) |
| Quality threshold | 0--1 (default 0.7) |
| Workflow timeout | 60 minutes |
| jobId format | Alphanumeric, hyphens, underscores (max 256 chars) |
If a job exceeds the 60-minute workflow timeout, it is marked as failed. The status endpoint will report failed and the result endpoint will return a 500 error. Retry with a new jobId.
Idempotency
The jobId parameter supports idempotent requests:
- Submitting the same
jobIdreconnects to the existing workflow rather than starting a new one - If the previous job with that
jobIdfailed, the API returns an error asking you to retry with a newjobId - Without a
jobId, a random UUID is generated for each request
When reusing a jobId, the original job's parameters are used regardless of what you submit in the new request. To run a job with different parameters, use a different jobId.
Writer does not support webhook callbacks. Use the polling pattern described in the Quickstart to check for completion.
Writer Name Uniqueness
Writer names must be unique within your organization. Attempting to create a writer with a name that already exists returns an error. Use descriptive names that reflect the profile's purpose (e.g., blog-writer, product-descriptions-en, seo-landing-pages).
Rate Limits
Rate limits are applied at the organization level. If you receive a 429 Too Many Requests response, back off and retry. Contact support for details on current limits.
Next Steps
- Quickstart: Create a writer profile and run your first job in under 5 minutes
- Concepts: Deep dive into profiles, the writing loop, and quality evaluation
- API Reference: Complete endpoint documentation
- Authentication: API key best practices