Sari la conținut

Delivery API

Toate căile, filtrele și parametrii API-ului de citire, cu cache-ul și erorile.

DocumentațieAPI

Meniul documentațieiDelivery API

Delivery API întoarce conținutul publicat ca JSON. E doar pentru citire, stă în cache la margine și poate fi apelat la fiecare cerere.

HTTP
https://api.manifolio.com/delivery/v1/{projectId}/
Authorization: Bearer mf_live_cheia_ta_secreta

projectId e id-ul proiectului (un UUID), afișat la Developers → API keys → Connection. Cheia trebuie să fie din același proiect și să aibă scope-ul content:read.

Căi

CaleÎntoarce
GET /typeslimbile proiectului și tipurile, cu câmpurile lor
GET /entries/{type}intrările publicate ale unei colecții, câte o pagină
GET /entries/{type}/{idOrSlug}o intrare, după id sau după slug-ul din limba cerută
GET /singletons/{type}intrarea unui tip singleton

Parametri

ParametruExempluCe face
localerolimba răspunsului; câmpurile netraduse cad pe limba principală
fieldstitle,slug,datedoar aceste câmpuri; _id, _type, _locale, _publishedAt și _updatedAt vin mereu
filter[field]filter[series]=haregalitate, pe câmpurile de la primul nivel
filter[field][op]filter[date][gte]=2026-01-01eq, ne, gt, gte, lt, lte, in (listă cu virgulă), exists (true sau false)
sort-datepublished, updated sau un câmp; cu - în față, descrescător. Implicit -published
limit20între 1 și 100, implicit 20
cursordin nextCursorpagina următoare; un cursor merge doar cu sortarea din care a venit
populate1de la 0 la 3: referințele devin intrări întregi, până la adâncimea cerută

filter, sort, limit și cursor sunt pentru liste; o intrare sau un singleton primesc locale, fields și populate.

Exemple

Shell
curl -H "Authorization: Bearer $MANIFOLIO_KEY" \
  "https://api.manifolio.com/delivery/v1/$PROJECT/entries/article?locale=ro&fields=title,slug,author&populate=1&limit=10"

curl -H "Authorization: Bearer $MANIFOLIO_KEY" \
  "https://api.manifolio.com/delivery/v1/$PROJECT/entries/event?filter[startsAt][gte]=2026-10-01&sort=startsAt"

curl -H "Authorization: Bearer $MANIFOLIO_KEY" \
  "https://api.manifolio.com/delivery/v1/$PROJECT/singletons/site_settings"

Răspunsuri

O listă:

JSON
{
  "entries": [
    { "_id": "01a1b2c3-0000-7000-8000-000000000001", "_type": "article", "_locale": "ro",
      "_publishedAt": "2026-10-12T09:00:00.000Z", "_updatedAt": "2026-10-12T08:55:00.000Z",
      "title": "Primul articol", "slug": "primul-articol" }
  ],
  "nextCursor": "eyJ2IjoxfQ"
}

O intrare sau un singleton:

JSON
{ "entry": { "_id": "01a1b2c3-0000-7000-8000-000000000001", "_type": "article", "title": "Primul articol" } }

O referință rămâne id-ul țintei până ceri populate. O referință spre o intrare nepublicată lipsește din răspuns.

Erori

Erorile au o singură formă: { "error": { "code": "missing_scope", "message": "This key needs the content:read scope." } }.

StareCoduri
400invalid_locale, invalid_limit, invalid_fields, invalid_sort, invalid_populate, invalid_filter, invalid_cursor
401missing_key, invalid_key, key_revoked
403publishable_key, missing_scope
404project_not_found, type_not_found, entry_not_found

Cache

  • Răspunsurile stau în cache la margine, sub o cheie care conține versiunea de conținut a proiectului. Publicarea, retragerea, ștergerea sau schimbarea unui tip cresc versiunea, așa că o schimbare publicată se vede de la cererea următoare. Antetul x-cache spune HIT sau MISS.
  • Fiecare răspuns are ETag; dacă îl trimiți înapoi în If-None-Match, primești 304 Not Modified.
  • Pentru clienții tăi, API-ul trimite Cache-Control: private, max-age=0, must-revalidate.

Preview API

Aceleași căi, sub /preview/v1/{projectId}/, întorc ultima versiune salvată a fiecărei intrări, inclusiv ciornele. Folosești o cheie cu scope-ul content:preview (cheile de dezvoltare îl au implicit). Răspunsurile de previzualizare nu stau niciodată în cache, iar fiecare intrare are și _status: draft, published sau changed.