---
title: "Read an outbound agent"
method: GET
path: "/outbound-agents/{agent_id}/"
tags: ["outbound-agents"]
---

# Read an outbound agent

`GET /outbound-agents/{agent_id}/`

## 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/{agent_id}/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

One sequence's outbound agent: its personality, goal, call to action, language, per-message prompts, reply prompt, model and research switch, with the version number an edit must be sent against.

## Path parameters

- `agent_id` string, uuid, required

## Response `200`

Successful Response

- OutboundAgentReadSchema: One sequence's outbound agent: what it writes with, and how.
  - `column_names` object: The audience column each column id in the configuration is, by name: the columns the goal and the prompts point at with /, and the ones taken out of Write from. Filled on a read; a column that is gone is missing from it.
  - `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[]
  - `created_at` string, date-time, required
  - `id` string, uuid, required
  - `model_key` string, required
  - `name` string, required
  - `research` boolean, required
  - `updated_at` string, date-time, required
  - `version` integer, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Outbound agent not found.
- `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)
