---
title: "Draft a persona from the setup answers"
method: POST
path: "/api/v0/agent/personas/draft"
tags: ["Agent Personas"]
---

# Draft a persona from the setup answers

`POST /api/v0/agent/personas/draft`

## Request

- Base URL: `https://api.outerport.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.outerport.com/api/v0/agent/personas/draft`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/outerport/apis/outerport-api/docs/api/v0/agent/personas/draft/post.ts> (a function with typed inputs; its response is checked against the schema)

Returns the builtin tools the answers call for, and a name, description and system prompt written for them with the persona draft model. Saves nothing: create the persona with POST /personas. 403 when the answers call for a tool the caller's tier may not use; 502 when the model returns nothing usable.

## Request body

- PersonaDraftAnswers: The answers to the persona setup questions.
  - `takes_files` boolean, required: People drop files into the chat for it to work on.
  - `sources` string[]: What else it reads: knowledge-base documents, drawings, a knowledge graph, or a system connected over MCP.
  - `records_facts` boolean: It may write entities, relations and facts back to the knowledge graph. Ignored unless sources holds knowledge_graph.
  - `deliverable` 'chat' | 'filled_file' | 'new_file' | 'notebook', required: What it hands back: an answer in the chat, the file it was given filled in, a new spreadsheet or document, or a notebook.
  - `value_source` 'page' | 'lookup', required: page: every value is read off the page or file itself; lookup: a retrieved answer is enough.
  - `delegates` boolean: It may hand work to other personas.
  - `answer_language` 'user' | 'en' | 'ja', required: The language the persona answers in: user means whatever language the person writes in.
  - `locale` 'en' | 'ja', required: The UI language of the person creating the persona. The name, description and prompt are written in answer_language, or in this when answer_language is user.
  - `brief` string: The job, in the person's own words.

## Response `200`

Successful Response

- AgentPersonaDraftResponse: A suggested persona, written from the answers to the persona setup questions. Nothing is saved.
  - `name` string, required: The suggested name.
  - `description` string, required: The suggested description.
  - `prompt` string, required: The suggested system prompt.
  - `builtin_tool_ids` string[], required: The builtin tools the answers call for.
  - `is_roaming` boolean, required: True iff one of those tools requires a workspace.

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-09** `ecd5b922e78a`: 1 info
  - added the required property `is_roaming` to the response with the `200` status
- **2026-10-23** `a982f74233e9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/outerport/apis/outerport-api/changes/api/v0/agent/personas/draft/post.md)

---

[API](https://skmtc.dev/outerport/apis/outerport-api.md) - [All operations](https://skmtc.dev/outerport/apis/outerport-api/llms.txt) - [OpenAPI document](https://skmtc.dev/outerport/apis/outerport-api/revisions/08b5bf6f7f18?raw)
