canonical: https://jentic.com/apis/go1.com/go1-api

# GO1 API

Jentic publishes the only available OpenAPI specification for GO1 API, keeping it validated and agent-ready. The GO1 API is the v2 platform interface for the GO1 online learning marketplace, exposing OAuth client management, account information, learning collections, enrolments, learning objects (including SCORM packages), and SAML configuration. It is the preferred integration surface for embedding GO1 courses into an LMS or building AI-driven learning experiences that recommend, enrol, and report on training. Authentication is OAuth 2.0 with bearer tokens used for subsequent API calls.

## For AI agents

Manage GO1 learners, enrol them in learning objects, and add or remove items from collections. Useful for HR agents that automate compliance training rollouts.

## Scope

Does not handle course authoring, video hosting, or live instructor-led training - use for managing GO1 enrolments, collections, and learning objects only.

## Capabilities

- Authorise an OAuth client and exchange the code for a bearer access token
- Enrol a user in a specific learning object and check the enrolment status
- Add or remove learning objects from a curated collection
- Retrieve a learning object including its SCORM package URL for embedding in an LMS
- Manage staff client credentials for partner integrations
- Configure SAML custom attribute mappings for SSO-driven learner provisioning

## Use cases

### Compliance Training Rollout

When an organisation rolls out mandatory compliance training, HR systems call the GO1 API to enrol every employee in a learning object and track completion. The /enrolments endpoint creates and reads enrolment records, while /learning-objects exposes course metadata and the SCORM package needed to render the content inside an LMS.

Example prompt: Enrol every user in department 'Engineering' into the data-protection learning object and report completion 30 days later.

### Curated Learning Paths

Learning and Development teams build curated collections of GO1 courses for specific roles. The `/collections/{collection-id}/items/add` and /remove endpoints let an agent assemble or update a collection programmatically as new courses are published or retired.

Example prompt: Add the three newest leadership courses to collection 'Manager Onboarding' and remove courses flagged as deprecated.

### SSO and Partner Provisioning

Partners that resell GO1 content provision learners via SAML SSO. The `/saml/custom_attribute` and `/staff/client` endpoints let an integration map identity attributes from the partner IdP to GO1 user records and manage the OAuth clients that downstream apps use.

Example prompt: Create a SAML custom attribute mapping for 'employee_id' on the partner's GO1 staff client.

### AI Agent Skill Recommendation

An AI agent uses Jentic to recommend GO1 courses based on a learner's role and skill gaps. The agent searches for the enrolment operation, loads its schema, and chains it with /learning-objects lookups so the recommendation translates directly into an enrolment without leaving the chat surface.

Example prompt: Search Jentic for 'enrol go1 user', load the schema, and enrol the learner in the top three matching learning objects.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/oauth/token` | Exchange credentials for a bearer access token |
| GET | `/account` | Retrieve the authenticated organisation account |
| GET | `/enrolments` | List enrolment records |
| GET | `/enrolments/{enrolment-id}` | Get a specific enrolment by ID |
| GET | `/learning-objects` | List learning objects available to the account |
| GET | `/learning-objects/{lo-id}/scorm` | Fetch the SCORM package for a learning object |
| POST | `/collections/{collection-id}/items/add` | Add a learning object to a collection |
| POST | `/collections/{collection-id}/items/remove` | Remove a learning object from a collection |

## Key resources

- **OAuth** — Authorise clients, exchange tokens, and validate or revoke them
- **Account** — Retrieve the authenticated organisation's account details
- **Enrolments** — Create, read, and update learner enrolments in learning objects
- **Learning Content** — Look up learning objects and fetch SCORM packages
- **Collections** — Add or remove learning objects from a curated collection
- **Users** — List users registered against the account
- **OAuth Client Management** — Manage client credentials and regenerate secrets
- **SAML Custom Attributes** — Configure SSO attribute mappings

## Why Jentic

- **Setup:** Wiring the GO1 API by hand means running its OAuth2 flow alongside bearer auth, coordinating its API and auth hosts, and mapping the enrolment and collection endpoints yourself. Through Jentic you install once, import the GO1 API from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** GO1 puts the collection id in the URL path (`/collections/{collection-id}/items/add`), so a rule can pin your agent to one collection: it can add and remove items there and nothing else. You choose the operations it may call, so it reads enrolments and learning objects only when you include those operations.
- **Credential handling:** Your GO1 OAuth client secret and refresh token are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'enrol a GO1 user' or 'add a learning object to a collection', and Jentic returns the matching GO1 operation with its input schema so the agent calls the right endpoint without browsing the developer docs.

## Related APIs

- **GO1 Learning Platform API** — The narrower GO1 Learning Platform API focuses on auth and account-level reads.
- **Udemy Business API** — Udemy Business is a competing course library with its own LMS-style API.
- **BambooHR API** — BambooHR holds the employee records that drive who needs which GO1 enrolment.

## FAQ

### Why is there no official OpenAPI spec for GO1 API?

GO1 publishes developer reference documentation but does not ship an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call GO1 API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the GO1 API use?

GO1 uses OAuth 2.0 to issue access tokens at `/oauth/token`, then bearer tokens for subsequent calls. Jentic stores the OAuth client secret and refresh token encrypted in the vault and rotates the access token automatically before each call.

### Can I enrol a user with the GO1 API?

Yes. POST /enrolments creates a new enrolment record for a user against a learning object, and GET `/enrolments/{enrolment-id}` returns the status. Use these together to drive automated training rollouts.

### What are the rate limits for the GO1 API?

The OpenAPI spec does not declare numeric rate limits. GO1 publishes plan-specific limits in its developer portal; in practice, paginate list endpoints and back off on HTTP 429 responses.

### How do I add a course to a GO1 collection through Jentic?

Run a Jentic search for 'add course to go1 collection', load the schema for POST `/collections/{collection-id}/items/add`, and execute it with the learning object ID. Install with pip install jentic and chain search, load, and execute.

### Does the GO1 API support SCORM packages?

Yes. GET `/learning-objects/{lo-id}/scorm` returns the SCORM package URL for a learning object so it can be launched inside an external LMS.

### Can I limit what my agent is allowed to do with the GO1 API?

Yes. Because you run Jentic One yourself, your own rules decide which GO1 operations and credentials the agent may use. Since the collection id sits in the URL path at `/collections/{collection-id}/items/add`, you can pin the agent to a single collection so it only adds and removes items there and touches nothing else. You choose the operations it may call, so it reads enrolments and learning objects only when you include those endpoints.
