Skip to main content

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: qualityThreshold and evaluationDimensions define 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:

  1. The orchestrator receives the job prompt and the writer profile configuration
  2. The drafter produces content based on the prompt, style guide, and any research or tone context provided
  3. The editor evaluates the draft against the qualityThreshold and configured evaluationDimensions
  4. If quality is below the threshold, the editor provides targeted feedback and the drafter revises
  5. The loop repeats until quality meets the threshold or maxEditPasses is reached (default: 3)
  6. The final draft is returned, optionally post-processed by the Humanize API if humanize is 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:

  1. Run a Deep Research job to gather information on a topic
  2. Pass the research output as the research parameter to a Writer job
  3. 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 TypeMax Edit PassesExpected 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--105--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 humanize is enabled (adds post-processing time)

Limits and Considerations

LimitValue
Max name length256 characters
Max style guide10,000 characters
Max prompt100,000 characters
Max research100,000 characters
Max array items100 per array, 1,000 characters each
Max edit passes1--50 (default 3)
Quality threshold0--1 (default 0.7)
Workflow timeout60 minutes
jobId formatAlphanumeric, 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 jobId reconnects to the existing workflow rather than starting a new one
  • If the previous job with that jobId failed, the API returns an error asking you to retry with a new jobId
  • 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