Public sessions, your website presentation

A read-only Forest School booking API for your own website

Oakline remains the source for public session availability and booking links while your website controls the presentation. The API returns public session fields as JSON and does not expose child, family, payment or staff records.

How it fits

Oakline stays authoritative; your site stays yours

When a provider updates an eligible Oakline session, the API response reflects its current public details and capacity state. A developer can turn that response into native cards, lists or programme pages in the provider's own design.

  • No iframe is required.
  • Booking links return families to the correct Oakline tenant.
  • Pagination supports larger public schedules.
  • Optional date filters help limit the result set.
Server-side requestSafe placeholder
curl --request GET \
  'https://oakline.app/api/v1/public/tenants/demo/sessions?from=2026-09-01&limit=20' \
  --header 'Accept: application/json' \
  --header 'X-API-Key: YOUR_TENANT_API_KEY'

Keep a real API key out of public source when secrecy matters. Use an environment variable and a server-side request or proxy.

Response shape

Only public listing fields

The list endpoint returns public session occurrences, pagination and limited tenant presentation settings. It does not return bookings or private operational records.

Returned

  • Session and template IDs
  • Title and public description
  • Date and times
  • Location
  • Price and currency
  • Age range
  • Capacity, remaining and full state
  • Image and booking URL

Not returned

  • Child records
  • Family details
  • Medical or SEND information
  • Payments or balances
  • Staff records
  • Private messages
Example responseFictional data
{
  "data": [{
    "id": 4182,
    "template_id": 311,
    "title": "Acorn Explorers",
    "description_short": "A weekly woodland group...",
    "start_at": "2026-09-12T09:30:00",
    "end_at": "2026-09-12T12:00:00",
    "location_name": "Birch Meadow",
    "price": { "amount": 18, "currency": "GBP" },
    "capacity": { "total": 12, "remaining": 3, "is_full": false },
    "age_range": { "min": 5, "max": 11 },
    "image_url": "https://example.test/session.webp",
    "booking_url": "https://demo.oakline.app/booking?session_id=4182"
  }],
  "pagination": { "limit": 20, "has_more": false, "next_cursor": null }
}

Implementation boundaries

Use the API deliberately

Enablement

The provider must have API access enabled. Requests without the correct tenant key are rejected.

Credential visibility

A key embedded in browser JavaScript is visible to visitors. Use a server-side proxy when the key must remain private.

Attribution

A developer may add a “Powered by Oakline” link, but the public sessions controller does not make attribution a technical requirement.

Booking remains in Oakline

The external site presents sessions; the returned booking URL sends the family into the provider's Oakline booking flow.

Questions, answered

Before your developer starts

Does the integration require an iframe?

No. A developer can request JSON from Oakline and render the returned sessions into the website's own HTML.

Is the API anonymous?

No. The tenant must have API access enabled and requests require an X-API-Key header. A server-side request or proxy is recommended when the key must remain private.

What information is returned?

The response contains public tenant branding and public session information such as title, description, dates, times, location, price, age range, capacity status, image and booking URL.

Does the API expose child or payment data?

No. The public sessions controller does not return private child, family, payment or staff records.

Bring Oakline sessions into your website

Talk to Oakline about enablement, then give the developer guide to the person building your site.