---
title: "Check Prose"
method: POST
path: "/api/facade/check_prose"
tags: ["facade"]
---

# Check Prose

`POST /api/facade/check_prose`

## Request

- Base URL: `https://api.vruum.ai`
- URL: `https://api.vruum.ai/api/facade/check_prose`
- Auth: `HTTPBearer` (a scheme the document does not define)

Check a prose draft against the gate BEFORE submitting it — free to iterate.

Same engine and same structured failures as the blocking gate at
manage_messages / manage_engagements / manage_content: fix each
`failures[].fix` until `outcome=passed`, then submit. Pass `item_id` +
`item_type` ('engagement'|'message') and the server loads the item's real
context (source post, dossier, channel, cross-prospect repetition window)
for exact parity; or pass `surface` + `content` (+ `channel`/`post_text`)
to check free-standing text. `rules_only=true` returns the surface's
current rules + `rules_version` (compare to your embedded copy).
Deterministic lint only — taste judgment is the calling harness's job.
Read-only: nothing is written.

## Request body

- CheckProseRequest
  - `surface` string, nullable: Prose surface: engagement_comment | cold_email | linkedin_message | reply_draft | content_post. Required unless item_id resolves it.
  - `content` string, nullable: The draft text to check (required unless rules_only).
  - `item_id` string, nullable: Optional queue-item UUID. With item_type, the server loads the real context (source post, dossier, channel, repetition window) so the check is exact parity with the submission gate.
  - `item_type` string, nullable: 'engagement' or 'message' (with item_id).
  - `channel` string, nullable: Channel for per-channel caps (linkedin_connection/linkedin_message/linkedin_inmail/email) when no item_id.
  - `post_text` string, nullable: Source post text (engagement overlap check) when no item_id.
  - `rules_only` boolean: Return the surface's current prose rules + rules_version instead of checking a draft (for embedded-rules drift detection).
  - `client_rules_version` string, nullable: The rules_version the caller authored against; response sets rules_changed when it differs.

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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