Comment on page
Competency v1
Access all the major skills/occupations/domains of knowledge from one single API 📍
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.
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.
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
# With shell, you can just pass the correct header with each request
curl "api_endpoint_here"
-H "x-api-key: SAY-FRIEND-AND-ENTER"
import requests
url = 'api_endpoint_here'
headers = {'x-api-key': 'SAY-FRIEND-AND-ENTER'}
r = requests.get(url, headers=headers)
r.json()
$key = 'SAY-FRIEND-AND-ENTER';
$curl = curl_init('api_endpoint_here');
curl_setopt($curl,CURLOPT_CAINFO,__DIR__ . DIRECTORY_SEPARATOR . 'certInokufu.cer');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('x-api-key:'.$key));
$data = curl_exec($curl);
if($data===false){
var_dump(curl_error($curl));
};
apiKeySecured = 'SAY-FRIEND-AND-ENTER';
const search = async () => {fetch('api_endpoint_here', {headers: {"x-api-key": apiKeySecured}} ).then(function(response) {
if(response.ok) {
response.json().then(function(json) {
const resJson = JSON.stringify(json)
//console.log(resJson);
return resJson;
})}})};
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.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.
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 in
msg.
This endpoint returns a list of term that are similar to specific keywords about a skill, occupation or domain of knowledge.
Direct customer
GET https://api.inokufu.com/domcomp/v1/similar
The API key must be included in the header.
Direct customer
"x-api-key": "SAY-FRIEND-AND-ENTER"
Make sure to replace SAY-FRIEND-AND-ENTER with the demo key or your own Developer API key.
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). |
Shell
Python
php
Javascript
curl "https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en"
-H "x-api-key: SAY-FRIEND-AND-ENTER"
import requests
url = 'https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en'
headers = {'x-api-key': 'x-api-key: SAY-FRIEND-AND-ENTER'}
r = requests.get(url, headers=headers)
r.json()
$key = 'SAY-FRIEND-AND-ENTER';
$curl = curl_init('https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en');
//Download the certificate from 'https://api.inokufu.com/' to avoid SSL errors and replace 'certInokufu.cer' with the name of your downloaded file
curl_setopt($curl,CURLOPT_CAINFO,__DIR__ . DIRECTORY_SEPARATOR . 'certInokufu.cer');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('x-api-key:'.$key));
$data = curl_exec($curl);
if($data===false){
var_dump(curl_error($curl));
};
apiKeySecured = 'SAY-FRIEND-AND-ENTER';
const search = async () => {fetch('https://api.inokufu.com/domcomp/v1/similar?keywords=weld&lang=en', {headers: {"x-api-key": apiKeySecured}} ).then(function(response) {
if(response.ok) {
response.json().then(function(json) {
const resJson = JSON.stringify(json)
//console.log(resJson);
return resJson;
})}})};
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. |
Here is an example of the JSON structured response provided by this endpoint.
{
"statusCode": 200,
"request": {
"keywords": "weld",
"lang": "en"
},
"response": [
{
"label": "welder",
"score": 1.0,
"source": "Inokufu DomComp index"
},
{
"label": "welding",
"source": "Inokufu DomComp synonym"
},
{
"label": "operate welding equipment",
"source": "ESCO classification"
},
{
"label": "weld underwater",
"source": "ESCO classification"
},
{
"label": "weld in hyperbaric conditions",
"source": "ESCO classification"
},
{
"label": "weld mining machinery",
"source": "ESCO classification"
},
{
"label": "apply thermite welding techniques",
"source": "ESCO classification"
},
{
"label": "join metals",
"source": "ESCO classification"
},
{
"label": "perform tungsten inert gas welding",
"source": "ESCO classification"
},
{
"label": "welding coordinator",
"source": "ESCO classification"
},
{
"label": "perform metal active gas welding",
"source": "ESCO classification"
},
{
"label": "perform metal inert gas welding",
"source": "ESCO classification"
}
]
}
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.Direct customer
POST https://api.inokufu.com/domcomp/v1/tagger
The API key must be included in the header.
Direct customer
"x-api-key": "SAY-FRIEND-AND-ENTER"
Make sure to replace SAY-FRIEND-AND-ENTER with the demo key or your own Developer API key.
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). |
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. |
Here is an example of the JSON structured response provided by this endpoint.
{
"statusCode": 200,
"body": {
"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",
"lang": "en",
"tags": [
"world wide web",
"developer",
"web developer",
"networks it",
"web",
"computer network",
"telecommunications - telecommunications networks",
"internet",
"dev",
"code programming",
"van",
"programming",
"computer networks",
"development"
]
}
}
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.
Direct customer
GET https://api.inokufu.com/domcomp/v1/suggest
The API key must be included in the header.
Direct customer
"x-api-key": "SAY-FRIEND-AND-ENTER"
Make sure to replace SAY-FRIEND-AND-ENTER with the demo key or your own Developer API key.
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. |
Shell
Python
php
Javascript
curl "https://api.inokufu.com/domcomp/v1/suggest?keywords=python"
-H "x-api-key: SAY-FRIEND-AND-ENTER"
import requests
url = 'https://api.inokufu.com/domcomp/v1/suggest?keywords=python'
headers = {'x-api-key': 'x-api-key: SAY-FRIEND-AND-ENTER'}
r = requests.get(url, headers=headers)
r.json()
$key = 'SAY-FRIEND-AND-ENTER';
$curl = curl_init('https://api.inokufu.com/domcomp/v1/suggest?keywords=python');
//Download the certificate from 'https://api.inokufu.com/' to avoid SSL errors and replace 'certInokufu.cer' with the name of your downloaded file
curl_setopt($curl,CURLOPT_CAINFO,__DIR__ . DIRECTORY_SEPARATOR . 'certInokufu.cer');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('x-api-key:'.$key));
$data = curl_exec($curl);
if($data===false){
var_dump(curl_error($curl));
};
apiKeySecured = 'SAY-FRIEND-AND-ENTER';
const search = async () => {fetch('https://api.inokufu.com/domcomp/v1/suggest?keywords=python', {headers: {"x-api-key": apiKeySecured}} ).then(function(response) {
if(response.ok) {
response.json().then(function(json) {
const resJson = JSON.stringify(json)
//console.log(resJson);
return resJson;
})}})};
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. |
Here is an example of the JSON structured response provided by this endpoint.
{
"statusCode": 200,
"request": {
"keywords": "python",
"keywords_transformed": [
"python"
]
},
"response": {
"content": [
{
"label": "sql",
"confidence": 0.6683011054992676
},
{
"label": "jupyter",
"confidence": 0.6620635390281677
},
{
"label": "poo",
"confidence": 0.6430356502532959
},
{
"label": "langage python",
"confidence": 0.6339637041091919
},
{
"label": "iterateurs",
"confidence": 0.6258624196052551
},
{
"label": "java",
"confidence": 0.6247775554656982
},
{
"label": "swift",
"confidence": 0.6237753629684448
},
{
"label": "expression lambda",
"confidence": 0.6212818026542664
},
{
"label": "programmation objet",
"confidence": 0.6212782859802246
},
{
"label": "programmation java",
"confidence": 0.621195375919342
}
],
"msg": "A00 - These results are our best effort to answer your query."
}
}
Last modified 2yr ago