Appearance
Publishing
All three steps need a session. See write and sell a journal for the rules in plain words.
POST /journal/save
json
{
"id": 12,
"ticker": "AAPL",
"title": "Apple launch week, in the chief executive's own words",
"dek": "The free preview, 120 to 340 characters...",
"body": "## The short version\n\nA claim [DJ-AAPL-260918-01]...",
"priceUsdg": 0.4,
"authorName": "Marisol Etxeberria"
}Leave id out to create a draft. Include it to update one of yours. Any edit sets the status back to draft.
| Status | When |
|---|---|
200 | { "id": 12 } |
409 | The journal is already published. Published journals cannot be edited |
422 | { "error": "...", "problems": ["..."] }: every rule the draft breaks |
429 | More than 20 drafts in a day |
POST /journal/audit
Body: { "id": 12 }
Reads whether your wallet holds the company's Stock Token, then runs the audit agent. Takes about half a minute.
json
{
"status": "approved",
"report": {
"verdict": "approve",
"score": 95,
"summary": "The journal accurately reflects and synthesizes the four cited posts...",
"issues": [{ "severity": "note", "check": "originality", "detail": "..." }],
"engine": "x-ai/grok-4.3",
"auditedAt": "2026-09-20T02:14:09.118Z"
},
"metaUrl": "https://dovejournal.com/api/meta/12"
}status is approved, revise, or rejected. On approval the text is hashed and the journal gets its public slug. A draft can be audited 8 times (429 after that). 503 means the audit agent is unavailable: try again shortly.
Mint, then POST /journal/minted
Once approved, call register(metaUrl) on the Identity Registry from the author's wallet. Then tell the server:
Body: { "id": 12, "tx": "0x..." }
The server reads the receipt and only goes live if:
- the transaction succeeded and came from the signed-in wallet,
- it minted a token from the zero address to that wallet,
- the token's
tokenURIequals this journal'smetaUrl.
Success: { "slug": "apple-launch-week-...-12" }. The Stock Token's price at that moment is stored with the journal.
GET /journal/{id}/draft
Your own draft, with its last audit report, for reopening in an editor.
