Digitalyser.io for developers
API referenceEditorial

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.

GET/v1/projects/{projectId}/contents/{contentId}

Authorization

agent-token
AuthorizationBearer <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

projectId*string

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.

Formatuuid
contentId*string

The content item to read. Obtained from GET /contents — this surface does not resolve a title or a slug to an identifier.

Formatuuid

Response 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).

Was this page helpful?