Inokufu Docs
Search…
Competency v1
Access all the major skills/occupations/domains of knowledge from one single API πŸ“

Introduction

This page shows you how to access our Domains of Competency Index. A Domain of Competency (DomComp for short) is a general term used to refers to a topic, skill, domain of knowledge or occupation associated to a learning object. The main objective of a DomComp is to make it easier for learners to find educational content related to their objective or interest, whatever the way they formulate it.
This API is currently in public beta. As such, it is available for free until we launch it commercially. Feel free to email us at [email protected] if you have any questions.

Background

While building the Learning Objects Index, we faced tremendous challenges classifying the various skills, occupations or domains of knowledge that each learning object can be associated with. A lot of frameworks and taxonomies have tried to map this. Wikipedia is one of the most known and used. In Europe, there is the ESCO which is the multilingual classification of European Skills, Competences, Qualifications and Occupations. In France, there are similar frameworks such as ROME or Formacode. And many more in each country or industry. But none is perfect or really universal.
Knowing that we couldn't build one single taxonomy that would work for every learner, we decided to take another approach. Instead of creating a new taxonomy or framework, we decided to build the Domains of Competency Index (DCI) to bring them all and in the lightness bind them. As a result, Inokufu DCI is sort of a meta index that can be connected to any existing skill/occupation/domain taxonomies or frameworks. Using Machine Learning and Graph Theory, Inokufu DCI binds these sources together and makes it easier for edtech companies to build the next generation of learning tools.
We built the Competency API as the easiest way to get skills, occupations or domains of knowledge from one single API.

Authentication

Inokufu APIs expects for the API key to be included in API requests to the server in a header that looks like the following:
Shell
Python
PHP
Javascript
1
# With shell, you can just pass the correct header with each request
2
curl "api_endpoint_here"
3
-H "x-api-key: SAY-FRIEND-AND-ENTER"
Copied!
1
import requests
2
url = 'api_endpoint_here'
3
headers = {'x-api-key': 'SAY-FRIEND-AND-ENTER'}
4
r = requests.get(url, headers=headers)
5
r.json()
Copied!
1
$key = 'SAY-FRIEND-AND-ENTER';
2
$curl = curl_init('api_endpoint_here');
3
curl_setopt($curl,CURLOPT_CAINFO,__DIR__ . DIRECTORY_SEPARATOR . 'certInokufu.cer');
4
curl_setopt($curl, CURLOPT_HTTPHEADER, array('x-api-key:'.$key));
5
$data = curl_exec($curl);
6
if($data===false){
7
var_dump(curl_error($curl));
8
};
Copied!
1
apiKeySecured = 'SAY-FRIEND-AND-ENTER';
2
const search = async () => {fetch('api_endpoint_here', {headers: {"x-api-key": apiKeySecured}} ).then(function(response) {
3
if(response.ok) {
4
response.json().then(function(json) {
5
const resJson = JSON.stringify(json)
6
//console.log(resJson);
7
return resJson;
8
})}})};
Copied!
Make sure to replace SAY-FRIEND-AND-ENTER with the demo key or with your own Developer API key.
For Demo purpose, you can use this API key : MzSXmgX5Tl8HSZNIyXcElaL69MtOXymj1stHS4Jt but beware both request speed and number of daily calls are limited with this key.

Usage plans

For now, the API is available for free using the demo key above. This is a demo key and thus the API is throttled. If you want higher usage quota, email us at [email protected] and we will provide you with your own Developer API key.
If you have specific requirement for your use case, we can offer you a tailored usage plan. If you want to know more about our enterprise plans, please feel free to contact our Inokufu sales team.
We also have an academic access program for researchers and academics that would like to build and experiment with this API.

Best efforts

Our mission is to help you find the best learning objects out there. While we are working hard on this ambitious goal, we are still at the beginning of this journey, and we have not connected every existing skill/occupation/domain (yet). At this stage, we can't guaranty 100% accuracy of our results.
Results returned by the API are our best efforts to match your query.
Most endpoints of the Competency API returns a score that gives you an indication of the confidence level of the corresponding result. The higher the score, the more confident.
Responses returned by endpoint suggest also contains a message (msg) that tells you how good we think our answer to your query is. Messages currently returned by the API are shown in the table below.
Code
Message
Meaning
A00
These results are our best effort to answer your query.
We are pretty confident that these results closely match what you are looking for.
B00
These results does not match exactly your query.
We have some results to show you that may be close enough to your query but still it's not exactly what you asked for, so you know.
C00
No result to display for this query.
We have found no result we are confident enough to show you based on what you are looking for. Try again with less strict parameters.
Depending on the level of accuracy you need, you may want to filter out reponses based on the code returned inmsg.

Similar

This endpoint returns a list of term that are similar to specific keywords about a skill, occupation or domain of knowledge.

Request

Direct customer
1
GET https://api.inokufu.com/domcomp/v1/similar
Copied!

Headers

The API key must be included in the header.
Direct customer
1
"x-api-key": "SAY-FRIEND-AND-ENTER"
Copied!
Make sure to replace SAY-FRIEND-AND-ENTER with the demo key or your own Developer API key.

Query Parameters

Query parameters must be included in the URL.
Parameter
Type
Default
Required
Description
keywords
string
​
Yes
Keywords describing a skill, occupation or domain of knowledge for which you want to find similar terms in other taxonomies or frameworks.
lang
string
en
Yes
Language of the query such as en (english) orfr(french).

Code examples

Shell
Python
php
Javascript
1
curl "https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en"
2
-H "x-api-key: SAY-FRIEND-AND-ENTER"
Copied!
1
import requests
2
url = 'https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en'
3
headers = {'x-api-key': 'x-api-key: SAY-FRIEND-AND-ENTER'}
4
r = requests.get(url, headers=headers)
5
r.json()
Copied!
1
$key = 'SAY-FRIEND-AND-ENTER';
2
$curl = curl_init('https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en');
3
//Download the certificate from 'https://api.inokufu.com/' to avoid SSL errors and replace 'certInokufu.cer' with the name of your downloaded file
4
curl_setopt($curl,CURLOPT_CAINFO,__DIR__ . DIRECTORY_SEPARATOR . 'certInokufu.cer');
5
curl_setopt($curl, CURLOPT_HTTPHEADER, array('x-api-key:'.$key));
6
$data = curl_exec($curl);
7
if($data===false){
8
var_dump(curl_error($curl));
9
};
Copied!
1
apiKeySecured = 'SAY-FRIEND-AND-ENTER';
2
const search = async () => {fetch('https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en', {headers: {"x-api-key": apiKeySecured}} ).then(function(response) {
3
if(response.ok) {
4
response.json().then(function(json) {
5
const resJson = JSON.stringify(json)
6
//console.log(resJson);
7
return resJson;
8
})}})};
Copied!

Response

Response parameters

Parameter
Required
Description
label
Yes
The title of the term according to the source (see below)
source
Yes
The name or the corresponding taxonomy or framework
score
No
This number is an indication of the confidence of the match between the keywords and the label. The higher the score, the better.

Response example

Here is an example of the JSON structured response provided by this endpoint.
1
{
2
"statusCode": 200,
3
"request": {
4
"keywords": "weld",
5
"lang": "en"
6
},
7
"response": [
8
{
9
"label": "welder",
10
"score": 1.0,
11
"source": "Inokufu DomComp index"
12
},
13
{
14
"label": "welding",
15
"source": "Inokufu DomComp synonym"
16
},
17
{
18
"label": "operate welding equipment",
19
"source": "ESCO classification"
20
},
21
{
22
"label": "weld underwater",
23
"source": "ESCO classification"
24
},
25
{
26
"label": "weld in hyperbaric conditions",
27
"source": "ESCO classification"
28
},
29
{
30
"label": "weld mining machinery",
31
"source": "ESCO classification"
32
},
33
{
34
"label": "apply thermite welding techniques",
35
"source": "ESCO classification"
36
},
37
{
38
"label": "join metals",
39
"source": "ESCO classification"
40
},
41
{
42
"label": "perform tungsten inert gas welding",
43
"source": "ESCO classification"
44
},
45
{
46
"label": "welding coordinator",
47
"source": "ESCO classification"
48
},
49
{
50
"label": "perform metal active gas welding",
51
"source": "ESCO classification"
52
},
53
{
54
"label": "perform metal inert gas welding",
55
"source": "ESCO classification"
56
}
57
]
58
}
Copied!

Tagger

This endpoint returns a list of tags that can be extracted and/or associated to a text. It is helpful when you want to identify a list of skill, occupation or domain of knowledge associated to a full text.

Request

Direct customer
1
POST https://api.inokufu.com/domcomp/v1/tagger
Copied!

Headers

The API key must be included in the header.
Direct customer
1
"x-api-key": "SAY-FRIEND-AND-ENTER"
Copied!
Make sure to replace SAY-FRIEND-AND-ENTER with the demo key or your own Developer API key.

Body

This endpoint requires the parameters to be sent in the body, formatted as JSON. Parameters are described in the table below.
Parameter
Type
Required
Description
text
string
Yes
Text for which you want to find the associated skill, occupation or domain of knowledge. Best results are obtained for text between 100 and 500 characters.
lang
string
Yes
Language of the query such as en (english) orfr(french).

Response

Response parameters

Parameter
Required
Description
tokenized_text
Yes
The text in tokenized version that we used to find the tags.
lang
Yes
The language of the text
tags
​
This is the list of terms associated to the text.

Response example

Here is an example of the JSON structured response provided by this endpoint.
1
{
2
"statusCode": 200,
3
"body": {
4
"tokenized_text": "a web developer is a programmer who specializes in or is specifically engaged in the development of world wide web applications using a client server model",
5
"lang": "en",
6
"tags": [
7
"world wide web",
8
"developer",
9
"web developer",
10
"networks it",
11
"web",
12
"computer network",
13
"telecommunications - telecommunications networks",
14
"internet",
15
"dev",
16
"code programming",
17
"van",
18
"programming",
19
"computer networks",
20
"development"
21
]
22
}
23
}
Copied!

Suggest

This endpoint returns a list of suggestion of skill, occupation or domain of knowledge for specific keywords. This endpoint is not to be confused with the endpoint /similar which acts more as a synonym search within various finite taxonomies/frameworks. The endpoint /suggest is designed to make features such as autocomplete search input or suggested query. This endpoint is not limited by any taxonomy/framework.
This endpoint is still experimental and has been trained on a corpus of french texts only. The english version is in progress and will be available soon.

Request

Direct customer
1
GET https://api.inokufu.com/domcomp/v1/suggest
Copied!

Headers

The API key must be included in the header.
Direct customer
1
"x-api-key": "SAY-FRIEND-AND-ENTER"
Copied!
Make sure to replace SAY-FRIEND-AND-ENTER with the demo key or your own Developer API key.

Query Parameters

Query parameters must be included in the URL.
Parameter
Type
Default
Required
Description
keywords
string
​
Yes
Keywords describing a skill, occupation or domain of knowledge for which you want to suggest other terms.

Code examples

Shell
Python
php
Javascript
1
curl "https://api.inokufu.com/domcomp/v1/suggest?keywords=python"
2
-H "x-api-key: SAY-FRIEND-AND-ENTER"
Copied!
1
import requests
2
url = 'https://api.inokufu.com/domcomp/v1/suggest?keywords=python'
3
headers = {'x-api-key': 'x-api-key: SAY-FRIEND-AND-ENTER'}
4
r = requests.get(url, headers=headers)
5
r.json()
Copied!
1
$key = 'SAY-FRIEND-AND-ENTER';
2
$curl = curl_init('https://api.inokufu.com/domcomp/v1/suggest?keywords=python');
3
//Download the certificate from 'https://api.inokufu.com/' to avoid SSL errors and replace 'certInokufu.cer' with the name of your downloaded file
4
curl_setopt($curl,CURLOPT_CAINFO,__DIR__ . DIRECTORY_SEPARATOR . 'certInokufu.cer');
5
curl_setopt($curl, CURLOPT_HTTPHEADER, array('x-api-key:'.$key));
6
$data = curl_exec($curl);
7
if($data===false){
8
var_dump(curl_error($curl));
9
};
Copied!
1
apiKeySecured = 'SAY-FRIEND-AND-ENTER';
2
const search = async () => {fetch('https://api.inokufu.com/domcomp/v1/suggest?keywords=python', {headers: {"x-api-key": apiKeySecured}} ).then(function(response) {
3
if(response.ok) {
4
response.json().then(function(json) {
5
const resJson = JSON.stringify(json)
6
//console.log(resJson);
7
return resJson;
8
})}})};
Copied!

Response

Response parameters

Parameter
Required
Description
label
Yes
The suggested term
score
Yes
This number is an indication of the confidence of the match between the keywords and the label. The higher the score, the better.

Response example

Here is an example of the JSON structured response provided by this endpoint.
1
{
2
"statusCode": 200,
3
"request": {
4
"keywords": "python",
5
"keywords_transformed": [
6
"python"
7
]
8
},
9
"response": {
10
"content": [
11
{
12
"label": "sql",
13
"confidence": 0.6683011054992676
14
},
15
{
16
"label": "jupyter",
17
"confidence": 0.6620635390281677
18
},
19
{
20
"label": "poo",
21
"confidence": 0.6430356502532959
22
},
23
{
24
"label": "langage python",
25
"confidence": 0.6339637041091919
26
},
27
{
28
"label": "iterateurs",
29
"confidence": 0.6258624196052551
30
},
31
{
32
"label": "java",
33
"confidence": 0.6247775554656982
34
},
35
{
36
"label": "swift",
37
"confidence": 0.6237753629684448
38
},
39
{
40
"label": "expression lambda",
41
"confidence": 0.6212818026542664
42
},
43
{
44
"label": "programmation objet",
45
"confidence": 0.6212782859802246
46
},
47
{
48
"label": "programmation java",
49
"confidence": 0.621195375919342
50
}
51
],
52
"msg": "A00 - These results are our best effort to answer your query."
53
}
54
}
Copied!
Last modified 8d ago