Developers

Australia Wide First Aid developers

Public, read-only access to Australia Wide First Aid's courses, venues, sessions and FAQs: a REST agent API, an MCP server, an A2A agent and NLWeb, all answering from the same data. No API key needed.

Quickstart

Every example runs as written against the live site.

List every bookable course

curl https://www.australiawidefirstaid.com/agent/courses

Find CPR sessions near a postcode

curl 'https://www.australiawidefirstaid.com/agent/nearby-sessions?course=cpr&near=4510'

Initialise the MCP server

curl -X POST https://www.australiawidefirstaid.com/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"quickstart","version":"1.0"}}}'

Read the A2A agent card

curl https://www.australiawidefirstaid.com/.well-known/agent-card.json

Ask a question in plain words

curl 'https://www.australiawidefirstaid.com/ask?query=first+aid+brisbane'

To use the MCP server in an assistant, add https://www.australiawidefirstaid.com/mcp as a custom connector (Streamable HTTP, no sign-in).

Endpoints

The REST agent API's operations, from its OpenAPI description. Each example request runs as written; each example response is trimmed: see the full response in the API docs.

GET /agent/courses

List courses (listCourses)

curl https://www.australiawidefirstaid.com/agent/courses

Trimmed: see the full response in the API docs.

{
  "courses": [
    {
      "id": "first-aid",
      "code": "HLTAID011",
      "name": "Provide First Aid",
      "official_name": "Provide First Aid (Includes CPR)",
      "summary": "Comprehensive first aid training including CPR, emergency response and casualty management.",
      "duration": [
        "This is a blended course with self-paced online learning (e-Learning) and face-to-face training. Before attending the face-to-face training, students will need to complete their e-Learning which can be done in one sitting or over several sessions."
      ],
      "delivery": [
        "e-Learning plus face-to-face classroom training and assessment"
      ],
      "renewal": "Renew every 3 years",
      "url": "https://www.australiawidefirstaid.com/courses/first-aid"
    }
  ]
}

GET /agent/courses/{course}

Get a course's details (getCourseDetails)

  • course (path, required): The course's id, unit code, workshops course id or name.
curl https://www.australiawidefirstaid.com/agent/courses/first-aid

Trimmed: see the full response in the API docs.

{
  "id": "first-aid",
  "code": "HLTAID011",
  "name": "Provide First Aid",
  "official_name": "Provide First Aid (Includes CPR)",
  "headline": "HLTAID011 Provide First Aid is the minimum requirement for workplace first aid compliance.",
  "key_points": [
    "HLTAID011 Provide First Aid — a nationally recognised certification"
  ],
  "renewal": "Renew every 3 years",
  "certificate": [
    "A PDF Statement of Attainment in HLTAID011 Provide First Aid will be emailed to you the same day as your successful completion of the training and assessment (and provided that student has provided a verified USI and completed all required assessment for the course)."
  ],
  "url": "https://www.australiawidefirstaid.com/courses/first-aid"
}

GET /agent/locations

List training venues (listLocations)

  • state (query): A state or territory, such as QLD, in any case. Ignored when near is given.
  • near (query): A postcode or suburb, optionally with its state, such as 4510 or Caboolture QLD.
  • limit (query): With near, how many venues to return. Values below 1 use the default.
curl 'https://www.australiawidefirstaid.com/agent/locations?state=QLD'

Trimmed: see the full response in the API docs.

{
  "locations": [
    {
      "id": "beaudesert",
      "name": "Beaudesert",
      "state": "QLD",
      "suburb": "Beaudesert",
      "postcode": "4285"
    }
  ]
}

GET /agent/sessions

Search sessions at one venue (searchSessions)

  • course (query, required): The course's id, unit code, workshops course id or name, as getCourseDetails accepts.
  • location (query, required): The venue's id or name from listLocations, or a suburb only one venue has.
  • date_from (query): The first date to search, YYYY-MM-DD in Australia/Brisbane time. Defaults to today; a past date means today.
  • date_to (query): The last date to search, YYYY-MM-DD. Defaults to 60 days after date_from and is capped at 365 days after it.
  • limit (query): How many sessions to return. Larger values are capped at 50; values below 1 use the default.
curl 'https://www.australiawidefirstaid.com/agent/sessions?course=first-aid&location=brisbane-cbd'

Trimmed: see the full response in the API docs.

{
  "sessions": [
    {
      "session_id": "2064652",
      "course": "first-aid",
      "course_name": "HLTAID011 Provide first aid + HLTAID009 Provide cardiopulmonary resuscitation",
      "date": "2026-11-04",
      "date_display": "Wednesday 4 November",
      "time": "9:00 am - 1:00 pm",
      "seats": "5+",
      "venue": {
        "id": "brisbane-cbd",
        "name": "Brisbane CBD",
        "state": "QLD"
      },
      "booking_page": "https://www.australiawidefirstaid.com/?course=92956&location=brisbane-cbd#find-course"
    }
  ]
}

GET /agent/nearby-sessions

Search sessions near a place (searchNearbySessions)

  • course (query, required): The course's id, unit code, workshops course id or name, as getCourseDetails accepts.
  • near (query): A postcode or suburb, optionally with its state. Empty means near the caller's IP address.
  • date_from (query): The first date to search, YYYY-MM-DD in Australia/Brisbane time. Defaults to today; a past date means today.
  • date_to (query): The last date to search, YYYY-MM-DD. Defaults to 60 days after date_from and is capped at 365 days after it.
  • venues (query): How many of the closest venues to search. Larger values are capped at 5; values below 1 use the default.
  • limit (query): How many sessions to return. Larger values are capped at 50; values below 1 use the default.
curl 'https://www.australiawidefirstaid.com/agent/nearby-sessions?course=cpr&near=4510'

Trimmed: see the full response in the API docs.

{
  "near": {
    "postcode": "4510",
    "state": "QLD",
    "suburb": "Caboolture"
  },
  "venues_searched": [
    {
      "id": "caboolture",
      "name": "Caboolture",
      "distance_km": 4
    }
  ],
  "sessions": [
    {
      "session_id": "2065479",
      "course": "cpr",
      "course_name": "HLTAID009 Provide cardiopulmonary resuscitation",
      "date": "2026-11-04",
      "date_display": "Wednesday 4 November",
      "time": "9:00 am - 11:00 am",
      "seats": "2 SEATS LEFT",
      "venue": {
        "id": "caboolture",
        "name": "Caboolture",
        "state": "QLD",
        "distance_km": 4
      },
      "booking_page": "https://www.australiawidefirstaid.com/?course=92955&location=caboolture#find-course"
    }
  ]
}

GET /agent/faqs

Get FAQs (getFaqs)

  • topic (query): A question or topic, such as How do I renew my certificate.
curl 'https://www.australiawidefirstaid.com/agent/faqs?topic=cpr'

Trimmed: see the full response in the API docs.

{
  "faqs": [
    {
      "question": "What first aid course do I need for work in Australia?",
      "answer": "Most workplaces require HLTAID011 Provide First Aid (includes CPR). Some roles also require HLTAID009 Provide CPR refreshed yearly, and childcare roles require HLTAID012 First Aid in an Education and Care Setting."
    }
  ]
}

Authentication

There are no API keys, and you don't need one. Every surface here is public and read-only: no account, sign-up or registration. Requests carry no Authorization header and no cookie. This one, run as written, answers with JSON:

curl https://www.australiawidefirstaid.com/agent/courses

See auth.md.

Sandbox

There is no sandbox or test mode. Every read is side-effect-free and safe to call against production while you build and test. Booking is always the person's own action on the enrolment site, where they enter their own details and pay, so an agent never makes a booking to test.

Resources

Booking

  • Agents must not enter payment or card details for a person. The person enters their own details and pays on the enrolment site.
  • Each booking handoff, start_booking or a session's booking_page, is for one seat. For several people, hand off once for each person.
  • Group and workplace training is arranged through an enquiry, not the public booking. Send groups and workplaces to workplace training.

Limits and terms

Every surface is free, with no paid tier or plan. Please cache responses as their Cache-Control headers allow, and keep your request rate modest.

Use of the site is covered by the terms and conditions and the privacy policy. Course prices are on the pricing page.

Help