Digitalyser.io for developers
API referenceEditorial

Editorial calendar entries

The project's social editorial calendar: reels, carousels and posts, planned or in production, each with its status.

The project's social editorial calendar: reels, carousels and posts, planned or in production, each with its status.

This is the social calendar, not the content list. The two are separate surfaces: a content item is written matter, a calendar entry is a piece scheduled for a social channel. They are produced by different pipelines and neither contains the other.

The status of a piece governs what may be done with it: only validating accepts a revision, and publishing to the network is never done here — it stays a human gesture, and no capability declares it.

GET/v1/projects/{projectId}/editorial-calendar

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

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/editorial-calendar" \  -H "Authorization: Bearer <token>"
[  {    "id": "a2f7c3d1-8b45-4e69-9c02-5d1e7f8a3b60",    "projectId": "8f14e45f-ea0e-4b1e-9b7a-2c3d4e5f6071",    "title": "Three signs your Google listing is costing you calls",    "weekLabel": "S39",    "dayLabel": "mardi",    "plannedDate": "2026-09-29",    "format": "reel",    "status": "ready_to_post",    "personas": [      "P1 restaurateur",      "P2 artisan"    ],    "funnelStage": "TOFU",    "topicId": "6b1d8e35-4c70-4a92-8f16-2d9c7a0b5e48",    "productionBrief": {      "hook": {        "pattern": "chiffre-contre-intuitif",        "onScreen": "68% of local searches end without a call",        "spoken": "Sixty-eight percent of local searches end without a single call."      },      "scenes": [        {          "index": 2,          "duration": 4,          "onScreenText": "Three quarters of the calls never happen",          "voiceover": "Most of those searches end on a listing that answers nothing.",          "visualDescription": "Screen recording of a listing with no opening hours, zoomed on the empty field"        }      ],      "slides": [        {          "index": 3,          "role": "preuve",          "title": "What a complete listing changes",          "body": "Opening hours, photos and answered reviews: the three fields that decide whether someone calls.",          "visualDescription": "Side-by-side of the same listing before and after completion"        }      ],      "post": {        "onScreenText": "Your listing answers one question out of three",        "visualDescription": "Close-up of a phone showing an incomplete listing"      },      "caption": "Three fields decide whether someone calls you. Most listings fill one.",      "hashtags": [        "visibilitelocale",        "artisan",        "googlebusiness"      ],      "microStep": "Tester",      "cta": "Check your own listing in two minutes — link in bio.",      "heygenSceneBriefs": [        {          "scene": 2,          "prompt": "Medium shot, neutral background, calm delivery, no gestures",          "script": "Most of those searches end on a listing that answers nothing."        }      ],      "montageBrief": "Cut on the beat between scenes 2 and 3, keep the screen recording full-frame.",      "revisions": [        {          "at": "2026-09-22T11:04:37.000Z",          "hint": "The hook states a figure without naming its source."        }      ]    },    "packageAssets": {      "folder": "social/acme/S39-mardi",      "assembledAt": "2026-09-27T08:22:10.000Z",      "files": [        {          "name": "caption.txt",          "kind": "caption",          "url": "https://assets.example/social/acme/S39-mardi/visual-1.png",          "content": "Three fields decide whether someone calls you. Most listings fill one."        }      ]    },    "decisionLog": [      {        "at": "2026-09-26T14:07:52.000Z",        "source": "dashboard",        "decision": "validate",        "feedback": "Hook is good; trim the last scene by a second.",        "postUrl": "https://social.example/p/acme-S39-mardi"      }    ],    "failureReason": "The judge rejected the hook twice; production stopped rather than publish a third attempt.",    "createdAt": "2026-09-15T09:41:18.000Z",    "updatedAt": "2026-09-26T14:07:52.000Z"  }]

Generated from the capability registry — API version 1, 18 paths, from 4815355 (2026-10-12).

Was this page helpful?