---
title: "Read the outbound agent presets"
method: GET
path: "/outbound-agents/presets/"
tags: ["outbound-agents"]
---

# Read the outbound agent presets

`GET /outbound-agents/presets/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/outbound-agents/presets/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

The personalities an outbound agent can write in, what each model costs per message, and the prompts a new agent starts with. Read by the AI writing tab so the prices it quotes are the prices that are charged.

## Response `200`

Successful Response

- OutboundPresetsReadSchema: Everything the AI writing tab needs that is not the agent itself.
  - `campaigns` OutboundCampaignReadSchema[]: The campaign library: tested campaigns tailoring picks from for a sequence's audience, each with its steps and their instructions.
    - `featured` boolean: Shown as a card on the Sequences page; the rest are in the gallery.
    - `icon` string, required: The Lucide token its row wears in the campaign gallery.
    - `key` string, required
    - `name` string, required
    - `requires` string[]: What it cannot run without: `proof_points` (written in the business context), `linkedin` (LinkedIn profiles and a sender on LinkedIn) or `intent` (the person's own words on what it is for).
    - `retired` boolean: No longer chosen; listed so a sequence that runs it still reads right.
    - `steps` OutboundCampaignStepReadSchema[], required
      - `arm` string, nullable: `connected` or `not_accepted`: the answer to the campaign's connection request this step waits for. Null before the request, and on a step laid out on both branches.
      - `kind` string, required: `email`, `linkedin_connection` or `linkedin_withdraw`.
      - `prompt` string, required: The instruction the step's message is written from; empty on a withdraw.
      - `title` string, required: What the step's card is called.
      - `wait_days` integer, required: Days to wait before this step; 0 on the first.
      - `window_days` integer, nullable: On a connection request: how many days it waits for an answer before the contact goes down Not accepted. Null on every other step.
    - `summary` string, required
    - `tagline` string, required: The summary in a few words, for a card's two lines.
  - `default_config` OutboundAgentConfig, required: The versioned configuration one outbound agent carries, stored as JSON on its row. Everything a person sets on the Agent tab that is not already a column of the saved-agent row (``model_key`` and the research switch live there). ``message_prompts`` is keyed by an opaque slot key the caller mints (the step id); the agent never learns what a slot means.
    - `campaign` CampaignBrief: What one sequence's campaign is: the tested campaign it runs and why. Written by tailoring and by nothing else; the Agent tab reads it and never sends it back (the service keeps the stored one on every other write). Tailoring now rewrites the steps' instructions themselves and writes only ``reason`` and ``goal`` here. ``audience``, ``why_now``, ``angle`` and ``step_notes`` are what it wrote before: kept, and still read by the writer, for the agents that carry them. They were written by a model from the audience table, so they are background, never facts: only ``intent``, the person's own words, may be stated as fact.
      - `angle` string
      - `audience` string
      - `campaign_key` string, required
      - `chosen_by_person` boolean
      - `goal` string
      - `intent` string
      - `minted` string[]
      - `reason` string
      - `step_notes` object
      - `table_name` string
      - `tailoring_off` boolean
      - `why_now` string, nullable
    - `cta_label` string, nullable
    - `cta_url` string, nullable
    - `goal` string
    - `language` string
    - `message_prompts` object
    - `person_research` boolean
    - `personality_preset` 'direct' | 'consultative' | 'bold' | 'custom': The voice an agent writes in. Each preset is a real prompt; CUSTOM is the author's.
    - `personality_prompt` string
    - `reply_drafting` boolean
    - `reply_prompt` string
    - `translate` boolean
    - `write_from_excluded_column_ids` string[]
  - `default_email_prompts` string[], required
  - `default_linkedin_prompts` object, required
  - `default_reply_prompt` string, required
  - `person_research_available` boolean: Whether person research can be switched on: the catalog offers the read.
  - `personalities` OutboundPersonalityReadSchema[], required
    - `key` 'direct' | 'consultative' | 'bold' | 'custom', required: The voice an agent writes in. Each preset is a real prompt; CUSTOM is the author's.
    - `label` string, required
    - `prompt` string, required
    - `summary` string, required
  - `prices` OutboundPricePointReadSchema[], required
    - `clock_seconds` number, required
    - `display_name` string, required
    - `model_key` string, required
    - `no_web_tenths` integer, required
    - `profile_tenths` integer, required: What reading a contact's LinkedIn profile adds to the first message on this model, in tenths of a credit; charged only when a profile was read.
    - `web_tenths` integer, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
