# BSI Group — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and discover BSI Group training courses, qualifications, and schedules across multiple categories, topics, levels, standards, and delivery formats to find the perfect certification program for your needs. Filter results by course details, availability, and format to compare options and plan your professional development.

**Category:** Education | **Website:** [bsigroup.com/](https://bsigroup.com/) | **Docs:** [parse.bot/marketplace/0d74eea2-3863-455b-a2af-ef3d756b26c3/bsigroup-com-api](https://parse.bot/marketplace/0d74eea2-3863-455b-a2af-ef3d756b26c3/bsigroup-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_course_detail

Retrieve complete details for a specific training course or qualification by its URL path. Returns structured metadata including duration, course code, learning outcomes, target audience, and a booking link. The course_code from the response can be used with get_course_schedule to find available dates.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | Course URL path (e.g. '/en-GB/training-courses/iso-9001-2026-transition-training-course/') or full URL. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/get_course_detail \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### get_course_schedule

Retrieve scheduled dates and locations for a specific course using its course code. Returns an array of available sessions with date, venue, language, price, and availability status. Either course_code or url must be provided; if only url is given, the course code is extracted from the course detail page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `course_code` | string | No | Course reference code (e.g. 'QMS08001ENUK'). Obtainable from get_course_detail. |
| `url` | string | No | Course detail URL path or full URL, used to extract the course code if course_code is not provided. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/get_course_schedule \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"course_code":"<string>","url":"<string>"}'
```

### list_course_categories

List all available topic categories, standards, course levels, and delivery formats. Use the returned IDs as filter parameters in search and listing endpoints. Topics and standards come from the BSI API; levels and delivery formats are fixed enumerations.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/list_course_categories \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### list_courses_by_delivery_format

List training courses filtered by a specific delivery format. Returns paginated results. Format is a closed vocabulary of how the course is delivered.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `format` | string | Yes | Delivery format name. |
| `page` | integer | No | Page number for pagination. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/list_courses_by_delivery_format \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"format":"<string>","page":"<integer>"}'
```

### list_courses_by_level

List training courses filtered by a specific course level. Returns paginated results. Level is a closed vocabulary of difficulty/certification tiers.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `level` | string | Yes | Course level name. |
| `page` | integer | No | Page number for pagination. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/list_courses_by_level \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"level":"<string>","page":"<integer>"}'
```

### list_courses_by_standard

List training courses filtered by a specific ISO standard ID. Returns paginated results. Standard IDs are available from list_course_categories.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `standard_id` | string | Yes | Standard ID from list_course_categories (e.g. '16' for ISO 9001). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/list_courses_by_standard \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","standard_id":"<string>"}'
```

### list_courses_by_topic

List training courses filtered by a specific topic ID. Returns paginated results. Topic IDs are available from list_course_categories.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `topic_id` | string | Yes | Topic ID from list_course_categories (e.g. '37' for Risk Management). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/list_courses_by_topic \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","topic_id":"<string>"}'
```

### search_qualifications

Full-text search over BSI qualifications with optional topic and standard filters. Returns paginated results. Qualifications are distinct from training courses — they represent credential programmes.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `query` | string | No | Search keyword to filter qualifications. |
| `standards` | string | No | Comma-separated standard IDs to filter by. IDs available from list_course_categories. |
| `topics` | string | No | Comma-separated topic IDs to filter by. IDs available from list_course_categories. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/search_qualifications \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","query":"<string>","standards":"<string>","topics":"<string>"}'
```

### search_training_courses

Full-text search over BSI training courses with optional topic and standard filters. Returns paginated results ordered by relevance. Paginates via integer page counter. Each item is a lightweight summary; use get_course_detail for full information.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. |
| `query` | string | No | Search keyword to filter courses. |
| `standards` | string | No | Comma-separated standard IDs to filter by (e.g. '16' for ISO 9001). IDs available from list_course_categories. |
| `topics` | string | No | Comma-separated topic IDs to filter by (e.g. '37' for Risk Management). IDs available from list_course_categories. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-bsigroup-com-api-0d74eea2/search_training_courses \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>","query":"<string>","standards":"<string>","topics":"<string>"}'
```
