Skills
Create a skill
Creates a private skill owned by the caller. The slug is derived from
title; a title that slugs to the same value as another of your
skills returns 409 skill_exists.
POST
/
v1
/
skills
Create a skill
curl --request POST \
--url https://api.lusor.ai/v1/skills \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"title": "<string>",
"content": "<string>",
"tags": [
"<string>"
],
"appPackage": "<string>",
"resultSchema": {},
"folder": "<string>",
"clientRevision": 4503599627370495
}
'const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
content: '<string>',
tags: ['<string>'],
appPackage: '<string>',
resultSchema: {},
folder: '<string>',
clientRevision: 4503599627370495
})
};
fetch('https://api.lusor.ai/v1/skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.lusor.ai/v1/skills"
payload = {
"title": "<string>",
"content": "<string>",
"tags": ["<string>"],
"appPackage": "<string>",
"resultSchema": {},
"folder": "<string>",
"clientRevision": 4503599627370495
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"userId": "<string>",
"title": "<string>",
"content": "<string>",
"tags": [
"<string>"
],
"folder": "<string>",
"clientRevision": 123,
"isPublic": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"orgId": "<string>",
"appPackage": "<string>"
}{
"error": "validation_error",
"details": {}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
ApiKeyBearerAuth
Workspace API key, created in the dashboard under Settings → API Keys.
Body
application/json
Required string length:
1 - 200Markdown skill document. May be empty for a draft.
Maximum string length:
20000Maximum array length:
20Required string length:
1 - 64Required string length:
1 - 256Folder grouping label.
Required string length:
1 - 120Required range:
0 <= x <= 9007199254740991Response
Skill created
Markdown skill document.
Optional folder grouping label shown in the skills panel tree.
Persisted autosave revision. Autosave clients should seed their next clientRevision above this value (see PATCH).
Was this page helpful?
⌘I
Create a skill
curl --request POST \
--url https://api.lusor.ai/v1/skills \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"title": "<string>",
"content": "<string>",
"tags": [
"<string>"
],
"appPackage": "<string>",
"resultSchema": {},
"folder": "<string>",
"clientRevision": 4503599627370495
}
'const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
content: '<string>',
tags: ['<string>'],
appPackage: '<string>',
resultSchema: {},
folder: '<string>',
clientRevision: 4503599627370495
})
};
fetch('https://api.lusor.ai/v1/skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.lusor.ai/v1/skills"
payload = {
"title": "<string>",
"content": "<string>",
"tags": ["<string>"],
"appPackage": "<string>",
"resultSchema": {},
"folder": "<string>",
"clientRevision": 4503599627370495
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"userId": "<string>",
"title": "<string>",
"content": "<string>",
"tags": [
"<string>"
],
"folder": "<string>",
"clientRevision": 123,
"isPublic": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"orgId": "<string>",
"appPackage": "<string>"
}{
"error": "validation_error",
"details": {}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}
