A single content item
One editorial piece in full: its topic, its body, the formats derived from it, and where each has been published.
One editorial piece in full: its topic, its body, the formats derived from it, and where each has been published. Not a crawled page — those live under GET /audits/content.
A content item and its formats are not the same object, and they do not share a lifecycle. The item carries the substance; each format is a rendering of it for one channel, with its own production status. An item that reads as finished can still hold formats that are not.
/v1/projects/{projectId}/contents/{contentId}Authorization
agent-token An agent project token. Obtained by OAuth consent for an AI client, or derived per project from an organisation service key for a machine. A scoped API key authenticates the transport but opens no capability: a capability takes its project from the credential.
In: header
Path Parameters
The project this call is about. A routing hint, not an authorisation. The project comes from the credential; this segment exists so multi-project code stays uniform. If it names a project outside the token, the call is refused with routing_hint_mismatch.
uuidThe content item to read. Obtained from GET /contents — this surface does not resolve a title or a slug to an identifier.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://app.digitalyser.io/api/v1/projects/550e8400-e29b-41d4-a716-446655440000/contents/550e8400-e29b-41d4-a716-446655440000" \ -H "Authorization: Bearer <token>"{ "projectId": "8f14e45f-ea0e-4b1e-9b7a-2c3d4e5f6071", "topic": { "id": "6b1d8e35-4c70-4a92-8f16-2d9c7a0b5e48", "projectId": "8f14e45f-ea0e-4b1e-9b7a-2c3d4e5f6071", "title": "Why an incomplete Google listing costs calls", "description": "How the three fields readers check before calling — hours, photos, answered reviews — decide whether a listing converts.", "strategic_note": "Ranks for the queries the audit found unanswered, and the proof is already on hand.", "marketing_goal": "Get a first audit request from a local business owner", "target_problem": "People find me but never call", "keywords": [ "fiche google incomplète", "visibilité locale artisan" ], "intent": "informationnelle", "persona": "P1 restaurateur", "category": "actionable_advice", "cluster": "visibilité locale", "funnelStage": "TOFU", "personaRelevance": { "P1 restaurateur": 0.82, "P2 artisan": 0.47 }, "recommendedFormats": [ "how_to", "checklist" ], "recommendedCTA": "Check your own listing in two minutes", "seoTitle": "Incomplete Google listing: the 3 fields that cost you calls", "status": "approved", "archivedAt": "2026-09-12T16:20:05.000Z", "archiveReason": "Covered by a piece published in July; keeping both would split the same query.", "createdAt": "2026-08-30T10:22:41.000Z", "updatedAt": "2026-09-19T04:31:52.000Z" }, "topicId": "6b1d8e35-4c70-4a92-8f16-2d9c7a0b5e48", "canonicalTitle": "Why an incomplete Google listing costs calls", "clusterName": "visibilité locale", "pillarName": "SEO local", "personaLabel": "P1 restaurateur", "category": "actionable_advice", "centralMessage": "Three fields decide whether a listing gets called.", "selectedAngle": "show_common_mistake", "desiredImpact": "motivate_to_act", "targetProblem": "People find me but never call", "marketingGoal": "Get a first audit request from a local business owner", "possibleAngles": [ "show_common_mistake", "propose_solution", "illustrate_with_example" ], "recommendedFormats": [ "how_to", "checklist" ], "keywords": [ "fiche google incomplète", "visibilité locale artisan" ], "strategicNote": "Lead with the search that ends without a call; the audit has the figure.", "recommendedStructure": [ "What a reader checks first", "What a complete listing changes", "What the numbers say" ], "recommendedPhrases": [ "dit autrement", "ce que ça change concrètement" ], "recommendedCTA": "Check your own listing in two minutes", "intent": "informationnelle", "funnelStage": "TOFU", "generationProvenance": { "sourceType": "ai-assisted", "auditAligned": true }, "generationStatus": "ready", "brief": { "research": { "query": "What do local business owners check before calling a tradesperson?", "potentialUsefulSources": [ { "source": "https://presse-eco.example/2026/etude-recherche-locale", "title": "Baromètre 2026 de la visibilité locale des artisans", "publisher": "INSEE", "publishedAt": "2026-03-12T00:00:00.000Z", "kind": "primary" } ], "potentialInternalLinks": [ { "contentId": "d94b2f60-1a77-4c85-9e13-6b0f2a7c8d41", "title": "string", "description": "string", "url": "string" } ] }, "plan": { "titre_h1": "Incomplete Google listing: the three fields that cost you calls", "meta_description": "Opening hours, photos, answered reviews: what a reader checks before calling, and how to fix each one.", "persona_cible": "P1 restaurateur", "introduction_attendue": "Open on the search that ends without a call, then name the three fields.", "sections": [ { "h2": "What a complete listing actually changes", "answer_first": "A listing with opening hours, photos and answered reviews gets called; one missing any of the three usually does not.", "intention": "Give the reader the three fields to check, in order of impact." } ], "proof_section": { "h2": "What the numbers say", "intention": "Back the claim with a measured figure and name where it comes from." }, "conclusion": "Close on the two-minute check, then the call to action.", "takeaways": [ "Three fields decide the call", "Answered reviews weigh more than their rating" ] }, "qualityReport": { "verdict": "PASS", "score": 82, "dimensionScores": { "answer_first": 88, "evidence": 74, "structure": 85 }, "blockingFailures": [ { "section": "What the numbers say", "why": "The claim carries a figure with no source." } ], "reviseHints": [ "Give the proof section a measured figure with its source" ], "reviseCount": 1, "titleGateFailures": [ { "section": "titre_h1", "item": "banned_pattern", "why": "Opens on « Découvrez », which the house style bans." } ], "enforced": false, "judgedAt": "2026-09-16T11:48:02.000Z" }, "generatedAt": "2026-09-16T11:42:19.000Z" }, "formats": [ { "id": "f1c07a49-3b82-4d16-9a5e-8c4d2b6f7013", "contentId": "d94b2f60-1a77-4c85-9e13-6b0f2a7c8d41", "format": "how_to", "status": "published", "platform": "linkedin", "format_family": "long_form", "format_variant": "article", "title": "Incomplete Google listing: the three fields that cost you calls", "subtitle": "What a reader checks before picking up the phone", "summary": "Opening hours, photos and answered reviews decide the call. Here is how to check each one.", "outline": [ "What a reader checks first", "What a complete listing changes" ], "keywords": [ "fiche google incomplète" ], "publications": [ { "id": "7e2b9c04-6d51-4a38-b0f9-1c8e5a3d7f62", "contentFormatId": "f1c07a49-3b82-4d16-9a5e-8c4d2b6f7013", "versionNumber": 2, "publishedAt": "2026-09-24T08:15:27.000Z", "platform": "Website", "url": "https://www.acme.example/blog/fiche-google-incomplete", "platformId": "wp-1482", "platformConnectionId": "2c5f8a31-9b04-4e76-8d12-3a7c6b9e0f54", "title": "Incomplete Google listing: the three fields that cost you calls", "subtitle": "What a reader checks before picking up the phone", "summary": "Opening hours, photos and answered reviews decide the call.", "metadata": {}, "createdAt": "2026-09-24T08:15:27.000Z" } ], "createdAt": "2026-09-16T11:52:44.000Z", "updatedAt": "2026-09-24T08:15:27.000Z" } ], "createdAt": "2026-09-16T11:40:03.000Z", "updatedAt": "2026-09-24T08:15:27.000Z"}Generated from the capability registry — API version 1, 18 paths, from 4815355 (2026-10-12).