---
title: "Generate outreach messages"
method: POST
path: "/v1/agents/generateMessages"
tags: ["agents"]
---

# Generate outreach messages

`POST /v1/agents/generateMessages`

## Request

- Base URL: `https://api.zevari.ai`
- URL: `https://api.zevari.ai/v1/agents/generateMessages`
- Auth: HTTP bearer

Transport: call this endpoint with HTTP POST and a JSON request body. Generate a 3-message LinkedIn outreach sequence (initial + 2 follow-ups) personalized to the prospect's profile and your business context. Before using this for real outreach, call library_context_get(skill_slug='craft-outreach', include_examples=true) and apply the returned Outreach template plus Brand context.

## Request body

- object
  - `identifier` string, required: LinkedIn public identifier or provider ID
  - `sender_name` string: Your name (falls back to stored profile)
  - `sender_company` string: Your company name (falls back to stored profile)
  - `product_offering` string: What you sell (falls back to stored profile)
  - `message_type` 'cold_outreach' | 'warm_followup' | 'connection_accepted' | 'content_engagement': Type of message sequence
  - `campaign_goal` 'book_meeting' | 'start_conversation' | 'podcast_guest_invite' | 'webinar_event_invite' | 'free_audit_resource' | 'get_published_pr' | 'partnership_inquiry' | 'feedback_review_request' | 'other': Campaign goal for CTA alignment (falls back to profile default)
  - `resource_url` string: Resource URL for CTA (e.g., calendar link, landing page)
  - `language` string: Language for messages
  - `template_slug` string: Outreach template slug (e.g. 'pain-led', 'hook-starter-active'). Prefer the primary_outreach_templates value returned by library_context_get. Falls back to the built-in 3-message instructions when omitted.
  - `template_variant` string: Variant within the template's framework. For hook-starter pass 'active' or 'inactive'. Ignored when the slug already encodes the variant.
  - `custom_prompt` string: One-shot prompt override. Replaces the template prompt for this call only.

## Response `200`

Successful Zevari API response.

- ZevariResponseEnvelope
  - `ok` boolean, required: False when the underlying tool reports an error or a partial failure.
  - `method` string, required: Public API method name.
  - `data` unknown, required
  - `request_id` string, required: Request correlation ID. Also returned in X-Zevari-Request-Id.

## Other responses

- `400`: Invalid arguments or method execution error.
- `401`: Missing, invalid, expired, revoked, or unauthorized API key.
- `404`: Unknown or non-public Zevari API method.
- `429`: API key rate limit exceeded.
- `500`: Unhandled server error.

---

[API](https://skmtc.dev/zevari/apis/zevari-public-api.md) · [All operations](https://skmtc.dev/zevari/apis/zevari-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zevari/apis/zevari-public-api/revisions/a0bc3afac227?raw)
