Skip to content
Browse the docs

Developer Guide

Troubleshooting & FAQ

Most integration problems come from wrong coordinates, browser-side requests, or missing caching. Work through this page before contacting support.

Rate limits and caching

The standard limit is 60 requests per minute per client IP and tenant. Read X-RateLimit-Remaining on successful responses so you can see when your integration is approaching the limit.

Cache only successful responses on your server for 5–15 minutes. If you receive 429 Too Many Requests, stop retrying immediately, wait before the next attempt, and confirm that requests are sharing the cache instead of fetching once per visitor.

Error guide

SymptomWhat to checkWhat visitors should see
404 Not FoundRecheck the tenant slug and institution ID. Confirm the institution is available for public listing. A valid public institution with no published programmes returns an empty list, not a 404.Programme information is temporarily unavailable.
429 Too Many RequestsSlow down, add or repair server-side caching, and back off before retrying.Programme information is temporarily unavailable.
Timeout or 5xxKeep the timeout at 5 seconds and try again only on a later request. Do not serve expired cached programme facts.Programme information is temporarily unavailable.
200 OK with an empty programmes arrayConfirm that programmes have been reviewed and published for public listing, and that you used the intended institution ID.A truthful empty state, such as “No programmes are currently listed.”

Fail closed

Never replace an error with guessed, placeholder, or expired programme information. Show the unavailable message until a new request succeeds.

Why is the programme list empty?

The institution coordinate is valid, but there are no programmes currently available for public listing. Ask the institution’s Lernmark administrator to confirm publication, and verify that you used the intended institution ID.

Why do I see a CORS error?

You are calling the API directly from browser JavaScript. Cross-origin browser requests are blocked. Move the fetch into your server-side page, server function, CMS backend, or your own same-origin proxy.

Why do I get a 404?

The tenant slug or institution ID may be wrong, or the institution may not be available for public listing. Recopy both coordinates exactly. Do not try to discover IDs by changing the URL.

Why do I get a 429?

Your site is making too many requests. Add a shared 5–15 minute server cache, make sure cache keys include the institution and query, and back off after a 429.

Why is the list stale?

Your server cache has not expired yet. A successful response should remain cached for only 5–15 minutes. Shorten the TTL if your publishing workflow needs faster updates, but keep it long enough to avoid a request for every visitor.

Can I accept applications from my own form?

Not through this guide. This integration is read-only. Contact us to discuss an advanced or managed application integration.

Get help

If the self-serve checks do not solve the problem, contact us. Tell us what request you made, when it failed, the HTTP status, and the X-Request-Id response header. Do not send passwords, cookies, or access tokens.