Introduction to the Springest API

The Springest API is a REST-ful API. This documentation will explain you how you can communicate with it. If you have any problems or requests, please do contact us.

We've written some example scripts in PHP and Ruby in case you find it hard to get started.

Hosts

For each country that we operate in, our API is accessed through a different host. You'll need a separate API key for each host.

Country Host address
Netherlands https://api.springest.nl
United Kingdom https://api.springest.co.uk
Belgium (Flanders) https://api.nl.springest.be
Germany https://api.springest.de
Global https://api.springest.com
Our API is as stated per country and not per domain
 so it Is possible to call the Go Domains of that country. 
Per Go always use 'nameofgo.api.go.host'
See example of our Dutch demo Go domain.
https://demo.api.go.springest.nl<br>

End points

Trainings - courses, training, elearning and associated data Institutes - data on education providers 
Categories - the main ~21 categories Springest is categorised in Subjects - ~1000 specific subjects Springest is divided in
Reviews - ratings and reviews per course or institute Conversions - course bookings and information requests for providers
LearnMatch job / article matching - our "magic" matching API that returns relevant courses based on your input    Certificates and certifications - user certificates and the certifications they belong to.
Features with limited access:
Bookings Create - Create bookings in our system
Bookings Get - Get all bookings for your organisation
Webhooks for Conversions End point - Use webhooks to get latest updates per site for conversions
Autocomplete (search suggestions) - Create a "quick search" widget in your intranet. Webhooks for Trainings End point - Use webhooks to get latest updates per site for trainings (mainly for courseboards etc)
Users - Create user accounts   Cancel bookings - cancel bookings made in our system

Supported data formats

We provide both XML and JSON formatted data but only fully support .json  
We do accept XML requests in the xml request body if they are formatted like JSON requests or when they are provided in the url or via query params.

For brevity and readability we use only XML output in the examples in the API documentation.

Example of XML or JSON request.

{   "users": [{     "email": ...,     "external_id": ....   }] }

Response status codes

While using our API you can encounter the following response status codes:

Status Description
200 OK The request was correct
400 Bad Request You either tried to request an invalid resource, or used a parameter incorrectly
401 You're not authorised You need to supply valid authentication credentials (ie. an API key)
403 Forbidden You don't have the right privileges to access this method
404 Not Found The resource that you try to reach does not exist
405 Forbidden
The method received in the request-line is known but endpoint most likely not existing/correctly called
500 Server Error Something went wrong on our side

Authentication

Authentication is fairly simple with an API key that you can request from us
Please append your API key to every request you make, e.g. GET /trainings/1234.xml?api_key=YOURAPIKEY

Rate limiting

Please be aware that we've capped the amount of requests you can make to our API to 4000 requests per hour.

Access Levels

Not all data is accessible through the API. Additionally, depending on the type of partnership, certain fields will not be accessible.

Pagination

All the requests that have multiple results are paginated. You can set the page size by adding the size parameter to your request, e.g. to return 12 items per page, make the following request: GET /institutes.xml?size=12&api_key=YOURAPIKEY

You can set the page you need with the offset parameter, e.g. to get the third page of a list of institutes, using a page size of 12 institutes per page, make the following request: GET /institutes.xml?size=12&offset=24&api_key=YOURAPIKEY

Pagination parameters
Parameter Type Required Values Default Description
offset Integer No x > 0 0 Used to indicate starting point of pagination
size Integer No 1 <= x <= 30 10 Number of results per page

Documentation conventions

{text}
Means text that needs to be replaced by your own data
<text>
Means that something is optional

API Requests:

If you'd like to request an API key please send an email to datasupport@springest.com with the following details:

  • Your name and email address
  • The name of your organization
  • The URL of your organization
  • What you would like to do with our API

FAQ: 

→ Is import only the action when a new provider is added to the platform? Or also when a provider, that is already visible in the API overview, does an XML update?

An import means an update of all products for a provider based on the XML-feed with training information. This means that all products from this provider are being updated and have new information.

How much delay do we expect when multiple changes on the same ID happen? When does this happen?

"Springest will delay JSON and bundle information to prevent multiple changes on same ID (duplicate work)".  Every update gets sent as fast as possible. If there are 2 individual updates (so not 2 different changes in 1 single update) right after each other, we sent 2 webhooks.