FAQ
How to use EXT:felogin?
Set up EXT: as described in the
felogin documentation.
The headless-specific JSON output, and how to test the two-step login flow
with curl, is described in EXT:felogin.
Can I use custom fields, content elements or other extensions' plugins?
Yes — the JSON shape is plain TypoScript. Adding a field to every page or content element is shown in Snippets; custom content elements and Extbase plugins in Custom content & plugin output, third-party plugins in External plugins (EXT:news etc.). headless_news is a complete example of such an integration.
How to handle redirects in a headless setup?
The frontend application performs the actual redirect: TYPO3 returns JSON
({ "redirect) instead of an HTTP 30x
response. This is always on for shortcut, mount-point and site-base
redirects; redirect-manager records additionally need EXT:
installed. See EXT:redirects for the response shape and
customisation.
How to configure language and translation settings?
Languages are the site configuration's languages — nothing headless-specific.
TYPO3 resolves the language from the URL (/de/), not from an
Accept- header, so the frontend requests the language base it wants.
Every page response carries the available languages under i18n (rendered by
LanguageMenuProcessor), and
?type=834 returns them without page content — see Initial data (?type=834).
Translation fallback and overlay behaviour follow the core fallback /
fallbacks settings of each language.
How to enable clean output for plugins in EXT:headless?
Use the headless. feature flag, see
headless.elementBodyResponse.
Troubleshooting
- "No page configured for type=0"
- The site has no
pageobject: the set is missing fromdependencies, a root sys_template record wipes the set TypoScript (Configuration), or the site uses the mixed set and the request came without the JSONAcceptheader while no HTMLpageis configured. - HTML instead of JSON
- Mixed-mode site and the
Acceptheader is not exactlyapplication/. See Mixed mode and the Accept header.json - Forms, login or menus render HTML fragments, or
HEADLESS_markers appear in the outputINT_ START - The headless TypoScript is loaded but the site runs with
headless: 0, so the PHP-side integrations and theUSER_middleware stay off. SetINT headless: 1or2. - Links point at the API host
frontendis missing for that site, language orBase baseentry. Variants do not fall back to the site-level value. See Multi-Site & URL Configuration.Variants - Real
30xresponse instead of the JSON redirect envelope - The request was outside headless mode: mode
0, or mixed mode without theAcceptheader. See EXT:redirects. seois missing or empty- The
seo.placeholder was removed fromfields. title page..10. fields \Friendsonly runs when the rendered JSON has aOf TYPO3\ Headless\ Seo\ Meta Handler seo.key.title - The response is
[] - The encoder caught a
Json, usually invalid UTF-8 in a record, logged it as critical and returnedException []. Check the TYPO3 log. - Logged-in user is anonymous, hidden pages stay hidden, login works with curl but not through the frontend
- The cookies do not reach TYPO3: browser requests without credentials, no
shared
cookieacross hosts, or a server-side renderer that does not forwardDomain Cookie/Set-. See Cookies.Cookie - Login or form submission is rejected before validation
- A hidden field (
__,Request Token __,trusted Properties __, the honeypot) was not echoed back, or thestate typo3nonce_*cookie from the GET did not travel with the POST. See Cookies and EXT:form. - A CDN or proxy serves the wrong format on a mixed-mode site
- The cache does not key on
Accept. AddVary: Acceptto the page, for the JSON and the HTML representation. See Caching. - The browser console shows a CORS error
- The API host answers without
Access-. Use the proxy path or add the headers. See Cross-origin requests (CORS).Control- Allow- Origin - Backend preview of a mixed-mode site shows HTML
- That is the default: preview links stay on the TYPO3 host. Set
headless.in the site'spreview. override Mode: 1 settings.to point them atyaml frontend, so the frontend application renders the preview (Preview of hidden pages).Base - Images return 404 with
headless.storage Proxy - File URLs are rewritten to the frontend host, the files stay where they are. The frontend server has to proxy the rewritten path to the TYPO3 host. See Storage proxy (asset routing).