v1
Free tools

Read an AI persona and brand voice brief, poll until it is done

Returns the brief started by POST /api/v1/tools/persona-brief. While status is pending, fetching, analyzing or synthesizing, call again every 3 seconds: progress and pages show what has been read so far. When status is done, brief holds the structured brief, brief.writingPrompt the ready-to-paste prompt and markdown the full document. When status is failed, failureReason says why (NO_USABLE_PAGE, LLM_UNAVAILABLE, TIMEOUT, INTERNAL).

A page with a failureReason did not contribute to the brief. ANALYSIS_FAILED is the only one on a page that was read: it keeps its title and wordCount, stays counted in progress.pagesFetched and never enters progress.pagesAnalyzed nor metrics.

No quota is consumed. The briefId is random: whoever holds it can read the brief, which is what makes share links work. Briefs expire after 90 days. Reads that are not attributed to an account are subject to three anti-abuse counters, all per IP address and per UTC day: the total number of requests, the reads of a single brief, and the number of different briefs read. All three are far above any legitimate polling, including the busiest paid account: crossing any of them returns 429 READ_RATE_LIMITED with Retry-After. Once the cost ceiling is reached, further requests keep being refused until it resets, whether or not they carry a valid briefId.

get/api/v1/tools/persona-brief

Request

  • Base URL: https://app.serpmantics.com (the document declares no server; this is the origin it was published from)
  • URL: https://app.serpmantics.com/api/v1/tools/persona-brief
  • Auth: one of:
    • none
    • HTTP bearer

Query parameters

briefIdstring required

The briefId returned by the creation call (22 characters).

Response

The brief, in progress or finished.

successboolean

Example response

{
  "success": true,
  "data": {
    "briefId": "Q3v9Zk2LmN8pR5tW1xY7aB",
    "createdAt": "2026-09-15T10:00:00.000Z"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.