---
title: "Draft for activity"
method: POST
path: "/api/activities/{sid}/draft"
tags: ["activities"]
---

# Draft for activity

`POST /api/activities/{sid}/draft`

## Request

- Base URL: `https://beta.getsales.io/playtables/v1`
- URL: `https://beta.getsales.io/playtables/v1/api/activities/{sid}/draft`
- Auth: HTTP bearer and API key in header `Team-SID`

The words a play would write for an event, nothing created: a comment on a post event (the AI reads the whole post under the table's Engage with posts brief; one AI call at the AI price, a fresh draft each time) or a message to the person (the moment's template for a birthday, anniversary or job change, rendered for the person). An event no writer covers answers an empty text. Show the words to the user, then act_on_activity with them as they are or edited.

Contract:
- MCP tool `draft_for_activity`, registry package `mcp.playtables/activities`, mount `playtables.journeys`.
- Operation `action`, response envelope `action`.
- Flags: none.

## Path parameters

- `sid` string, required: The event (cr_ac_…).

## Request body

- DraftForActivityRequest: Request body of `draft_for_activity`.
  - `do` 'comment' | 'send_message', required: comment: on a post event only; send_message: a message to the person of any event.
  - `sender_profile_sid` string, nullable: Checked to be one that can act; the words do not depend on it.

## Response `200`

`action` success envelope.

- DraftForActivityResponse
  - `success` true, required
  - `operation` 'action', required
  - `action` string, required: kebab-case verb; matches the route segment.
  - `item` unknown, required
  - `result` object, required
    - `text` string, required: The words: a comment the AI wrote from the whole post under the table's Engage with posts brief, or the moment's message (a birthday, a work anniversary, a job change) rendered for the person; an empty string when no writer covers the event.
  - `meta` object, required
    - `trace_id` string, required: UUID v7; same 128-bit value as the X-Trace-Id header.
    - `span_id` string, required: 16 hex chars, root span of this request.
    - `timestamp` string, required: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
    - `duration_ms` integer, required: Server-side wall clock.
    - `team_sid` string, nullable: The team this call ran in (the token team, or the team_sid override). Null when unauthenticated; absent from pre-2026-08-20 backends.
    - `actor_type` string, nullable: user | agent | api_key | system. Null when unauthenticated; absent from pre-2026-08-20 backends.

## Other responses

- `4XX`: MCP error envelope. `error.code` is one of validation_failed, nothing_to_update, not_found, relation_not_found, invalid_transition, limit_exceeded, payment_required, duplicate_rejected, conflict, delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.
- `5XX`: MCP error envelope with `error.code` internal_error or service_unavailable.

---

[API](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-playtables.md) - [All operations](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-playtables/llms.txt) - [OpenAPI document](https://skmtc.dev/getsales/apis/getsales-public-contract-gs-service-playtables/revisions/aa394506515d?raw)
