Migrating from Storyblok

A field-by-field account of what stays identical, what differs, and what is not implemented yet.

Exacta is designed so that migration is a configuration change. This page is the honest version of that claim: what is identical, what differs, and what is not implemented yet.

What you change

diff
- endpoint: 'https://api.storyblok.com/v2/cdn'
- accessToken: '<storyblok-delivery-token>'
+ endpoint: 'https://api.exacta.im/v2/cdn'
+ accessToken: '<exacta-delivery-token>'

What stays identical

  • The story object — all 23 documented fields, with the same names and types, including ones Exacta has no data for. Those carry Storyblok’s own defaults rather than being omitted.
  • The response envelope: stories, story, cv, rels, links.
  • Query parameters on /stories and /links, including starts_with, by_uuids, by_slugs, excluding_slugs, search_term, content_type, sort_by and resolve_relations.
  • Pagination semantics: per_page defaults to 25 and caps at 100, and total comes back as a header.
  • Authentication by query parameter, and JSON error bodies.

What differs

Story idsbehavioural

Branch-local, so a story’s id under Exacta will not match its Storyblok id. This is the same rule Storyblok applies across pipeline stages. Key on uuid.

Freshnessbehavioural

Content reflects the last sync or promotion rather than Storyblok’s live state. That delay is the feature — it is what makes a stage stable.

by_uuids_orderedparameter

Accepted, but does not currently preserve the order of the uuids you passed.

cvparameter

Accepted and ignored on input. Responses are versioned per branch, so passing it changes nothing.

What is not implemented yet

Datasources and tagsendpoint

/datasources, /datasource_entries and /tags authenticate and return empty envelopes. They are not synced.

Localisationfeature

Stories are served as lang: "default", with empty translated_slugs and alternates. Multi-language spaces are not reproduced.

Releasesfeature

release_id is always null. Storyblok releases are not modelled.

Story-level metadatafield

tag_list, meta_data, group_id and sort_by_date carry defaults rather than your space’s values.

is_startpagefield

Always false. Folder index entries are not distinguished.

Rolling back

There is nothing to undo. Your content never left Storyblok, and Exacta only ever read from it. Point the endpoint and token back at Storyblok and your site behaves as it did before.