curl --request POST \
--url https://app.apigene.ai/api/skill \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"content": "<string>",
"license": "",
"compatibility": "",
"metadata": {},
"allowed_tools": "",
"status": "active",
"scripts": {},
"references": {},
"assets": {}
}
'import requests
url = "https://app.apigene.ai/api/skill"
payload = {
"name": "<string>",
"description": "<string>",
"content": "<string>",
"license": "",
"compatibility": "",
"metadata": {},
"allowed_tools": "",
"status": "active",
"scripts": {},
"references": {},
"assets": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
content: '<string>',
license: '',
compatibility: '',
metadata: {},
allowed_tools: '',
status: 'active',
scripts: {},
references: {},
assets: {}
})
};
fetch('https://app.apigene.ai/api/skill', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.apigene.ai/api/skill",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'content' => '<string>',
'license' => '',
'compatibility' => '',
'metadata' => [
],
'allowed_tools' => '',
'status' => 'active',
'scripts' => [
],
'references' => [
],
'assets' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.apigene.ai/api/skill"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": \"<string>\",\n \"license\": \"\",\n \"compatibility\": \"\",\n \"metadata\": {},\n \"allowed_tools\": \"\",\n \"status\": \"active\",\n \"scripts\": {},\n \"references\": {},\n \"assets\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.apigene.ai/api/skill")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": \"<string>\",\n \"license\": \"\",\n \"compatibility\": \"\",\n \"metadata\": {},\n \"allowed_tools\": \"\",\n \"status\": \"active\",\n \"scripts\": {},\n \"references\": {},\n \"assets\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.apigene.ai/api/skill")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": \"<string>\",\n \"license\": \"\",\n \"compatibility\": \"\",\n \"metadata\": {},\n \"allowed_tools\": \"\",\n \"status\": \"active\",\n \"scripts\": {},\n \"references\": {},\n \"assets\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"content": "<string>",
"created_by": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"license": "",
"compatibility": "",
"metadata": {},
"allowed_tools": "",
"status": "active",
"scripts": {},
"references": {},
"assets": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Skill Create
Endpoint to create a new skill associated with the authenticated tenant.
Args: skill (SkillCreate): The request body containing the skill definition.
Returns: Skill: The created skill object.
Raises: HTTPException 400: If input validation fails HTTPException 409: If the skill creation fails due to a runtime error.
curl --request POST \
--url https://app.apigene.ai/api/skill \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"content": "<string>",
"license": "",
"compatibility": "",
"metadata": {},
"allowed_tools": "",
"status": "active",
"scripts": {},
"references": {},
"assets": {}
}
'import requests
url = "https://app.apigene.ai/api/skill"
payload = {
"name": "<string>",
"description": "<string>",
"content": "<string>",
"license": "",
"compatibility": "",
"metadata": {},
"allowed_tools": "",
"status": "active",
"scripts": {},
"references": {},
"assets": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
content: '<string>',
license: '',
compatibility: '',
metadata: {},
allowed_tools: '',
status: 'active',
scripts: {},
references: {},
assets: {}
})
};
fetch('https://app.apigene.ai/api/skill', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.apigene.ai/api/skill",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'content' => '<string>',
'license' => '',
'compatibility' => '',
'metadata' => [
],
'allowed_tools' => '',
'status' => 'active',
'scripts' => [
],
'references' => [
],
'assets' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.apigene.ai/api/skill"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": \"<string>\",\n \"license\": \"\",\n \"compatibility\": \"\",\n \"metadata\": {},\n \"allowed_tools\": \"\",\n \"status\": \"active\",\n \"scripts\": {},\n \"references\": {},\n \"assets\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.apigene.ai/api/skill")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": \"<string>\",\n \"license\": \"\",\n \"compatibility\": \"\",\n \"metadata\": {},\n \"allowed_tools\": \"\",\n \"status\": \"active\",\n \"scripts\": {},\n \"references\": {},\n \"assets\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.apigene.ai/api/skill")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": \"<string>\",\n \"license\": \"\",\n \"compatibility\": \"\",\n \"metadata\": {},\n \"allowed_tools\": \"\",\n \"status\": \"active\",\n \"scripts\": {},\n \"references\": {},\n \"assets\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"content": "<string>",
"created_by": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"license": "",
"compatibility": "",
"metadata": {},
"allowed_tools": "",
"status": "active",
"scripts": {},
"references": {},
"assets": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
JWT Authorization header using the Bearer scheme. Example: 'Authorization: Bearer {token}'
Body
Name of the skill
Description of the skill
Full SKILL.md content
Optional license field
Optional compatibility field
Optional metadata dict
Optional allowed-tools field
Status of the skill: active or disabled
Optional scripts/ files: path -> content (per Agent Skills spec)
Show child attributes
Show child attributes
Optional references/ files: path -> content (per Agent Skills spec)
Show child attributes
Show child attributes
Optional assets/ files: path -> content (per Agent Skills spec)
Show child attributes
Show child attributes
Response
Successful Response
Unique identifier for the skill
Name of the skill
Description of the skill
Full SKILL.md content
User who created the skill
The date and time when the skill was created.
The date and time when the skill was last updated.
License field
Compatibility field
Metadata dict
Allowed-tools field
Status of the skill: active or disabled
Optional scripts/ files (path -> content)
Show child attributes
Show child attributes
Optional references/ files (path -> content)
Show child attributes
Show child attributes
Optional assets/ files (path -> content)
Show child attributes
Show child attributes
