Skills
Manage Skills (OpenAI-compatible /v1/skills). A skill packages a SKILL.md instruction file plus optional bundled scripts, references, and assets, published as immutable versions with a default_version/latest_version pointer. Upload as a JSON file array, a multipart directory, or a zip bundle; download a version as zip via /content.
Hadrian Extensions
owner_type/owner_idfor organization/team/project/user ownership (OpenAI is project-scoped)- JSON
filesarray ({path, content}) alongside the spec's zip/multipart upload files/files_manifest,total_bytes, and frontmatter flags on responsesskill_referenceaccepts a prefixed/bare id or a name slug, plus a specificversion
List skills for the current project (or a specific owner / accessible set).
Authorization
api_key API key authentication using Bearer token format
In: header
Query Parameters
Hadrian Extension: owner kind for single-owner listing.
Hadrian Extension: owner id for single-owner listing.
uuidint641 <= value <= 100Hadrian Extension: cursor for backward pagination (id of the first item from a previous page).
Response Body
application/json
application/json
curl -X GET "https://loading/api/v1/skills"{
"data": [
{
"allowed_tools": [
"string"
],
"argument_hint": "string",
"created_at": 0,
"default_version": "string",
"description": "string",
"disable_model_invocation": true,
"files": [
{
"byte_size": 0,
"content": "string",
"content_type": "string",
"created_at": "2019-08-24T14:15:22Z",
"path": "string"
}
],
"files_manifest": [
{
"byte_size": 0,
"content_type": "string",
"path": "string"
}
],
"frontmatter_extra": {
"property1": null,
"property2": null
},
"id": "string",
"latest_version": "string",
"name": "string",
"object": "string",
"owner_id": "string",
"owner_type": "string",
"source_ref": "string",
"source_url": "string",
"total_bytes": 0,
"user_invocable": true
}
],
"first_id": "string",
"has_more": true,
"last_id": "string",
"object": "string"
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Create a new skill (and its first version).
Authorization
api_key API key authentication using Bearer token format
In: header
Request Body
application/json
Hadrian Extension: SKILL.md frontmatter — tools the skill may use.
Hadrian Extension: SKILL.md frontmatter — argument hint for autocomplete.
Hadrian Extension: description; sniffed from SKILL.md frontmatter when omitted.
Hadrian Extension: SKILL.md frontmatter flag — block model auto-invocation.
Hadrian Extension: skill files as {path, content} objects (the spec
uploads binary files[] / a zip via multipart instead).
Hadrian Extension: unknown/forward-compat frontmatter keys, preserved verbatim.
Hadrian Extension: skill name slug; sniffed from SKILL.md frontmatter when omitted.
Hadrian Extension: git ref when imported.
Hadrian Extension: origin URL when imported.
Hadrian Extension: SKILL.md frontmatter flag — hide from the user / menu.
Response Body
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/skills" \ -H "Content-Type: application/json" \ -d '{}'{
"allowed_tools": [
"string"
],
"argument_hint": "string",
"created_at": 0,
"default_version": "string",
"description": "string",
"disable_model_invocation": true,
"files": [
{
"byte_size": 0,
"content": "string",
"content_type": "string",
"created_at": "2019-08-24T14:15:22Z",
"path": "string"
}
],
"files_manifest": [
{
"byte_size": 0,
"content_type": "string",
"path": "string"
}
],
"frontmatter_extra": {
"property1": null,
"property2": null
},
"id": "string",
"latest_version": "string",
"name": "string",
"object": "string",
"owner_id": "string",
"owner_type": "string",
"source_ref": "string",
"source_url": "string",
"total_bytes": 0,
"user_invocable": true
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Get a skill by id.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Response Body
application/json
application/json
curl -X GET "https://loading/api/v1/skills/string"{
"allowed_tools": [
"string"
],
"argument_hint": "string",
"created_at": 0,
"default_version": "string",
"description": "string",
"disable_model_invocation": true,
"files": [
{
"byte_size": 0,
"content": "string",
"content_type": "string",
"created_at": "2019-08-24T14:15:22Z",
"path": "string"
}
],
"files_manifest": [
{
"byte_size": 0,
"content_type": "string",
"path": "string"
}
],
"frontmatter_extra": {
"property1": null,
"property2": null
},
"id": "string",
"latest_version": "string",
"name": "string",
"object": "string",
"owner_id": "string",
"owner_type": "string",
"source_ref": "string",
"source_url": "string",
"total_bytes": 0,
"user_invocable": true
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Set the default version pointer for a skill.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Request Body
application/json
The skill version number to set as default.
Response Body
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/skills/string" \ -H "Content-Type: application/json" \ -d '{ "default_version": "string" }'{
"allowed_tools": [
"string"
],
"argument_hint": "string",
"created_at": 0,
"default_version": "string",
"description": "string",
"disable_model_invocation": true,
"files": [
{
"byte_size": 0,
"content": "string",
"content_type": "string",
"created_at": "2019-08-24T14:15:22Z",
"path": "string"
}
],
"files_manifest": [
{
"byte_size": 0,
"content_type": "string",
"path": "string"
}
],
"frontmatter_extra": {
"property1": null,
"property2": null
},
"id": "string",
"latest_version": "string",
"name": "string",
"object": "string",
"owner_id": "string",
"owner_type": "string",
"source_ref": "string",
"source_url": "string",
"total_bytes": 0,
"user_invocable": true
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Delete a skill.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Response Body
application/json
application/json
curl -X DELETE "https://loading/api/v1/skills/string"{
"deleted": true,
"id": "string",
"object": "string"
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Download the default version of a skill as a zip bundle.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Response Body
application/zip
application/json
curl -X GET "https://loading/api/v1/skills/string/content"{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}List a skill's versions.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Query Parameters
int641 <= value <= 100Hadrian Extension: cursor for backward pagination (id of the first item from a previous page).
Response Body
application/json
application/json
curl -X GET "https://loading/api/v1/skills/string/versions"{
"data": [
{
"allowed_tools": [
"string"
],
"argument_hint": "string",
"created_at": 0,
"description": "string",
"disable_model_invocation": true,
"files": [
{
"byte_size": 0,
"content": "string",
"content_type": "string",
"created_at": "2019-08-24T14:15:22Z",
"path": "string"
}
],
"files_manifest": [
{
"byte_size": 0,
"content_type": "string",
"path": "string"
}
],
"frontmatter_extra": {
"property1": null,
"property2": null
},
"id": "string",
"name": "string",
"object": "string",
"skill_id": "string",
"source_ref": "string",
"source_url": "string",
"total_bytes": 0,
"user_invocable": true,
"version": "string"
}
],
"first_id": "string",
"has_more": true,
"last_id": "string",
"object": "string"
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Create a new immutable version of a skill.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Request Body
application/json
Hadrian Extension: SKILL.md frontmatter — tools the skill may use.
Hadrian Extension: SKILL.md frontmatter — argument hint for autocomplete.
Whether to set this version as the default.
Hadrian Extension: description; sniffed from SKILL.md frontmatter when omitted.
Hadrian Extension: SKILL.md frontmatter flag — block model auto-invocation.
Hadrian Extension: skill files as {path, content} objects (the spec
uploads binary files[] / a zip via multipart instead).
Hadrian Extension: unknown/forward-compat frontmatter keys, preserved verbatim.
Hadrian Extension: git ref when imported.
Hadrian Extension: origin URL when imported.
Hadrian Extension: SKILL.md frontmatter flag — hide from the user / menu.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://loading/api/v1/skills/string/versions" \ -H "Content-Type: application/json" \ -d '{}'{
"allowed_tools": [
"string"
],
"argument_hint": "string",
"created_at": 0,
"description": "string",
"disable_model_invocation": true,
"files": [
{
"byte_size": 0,
"content": "string",
"content_type": "string",
"created_at": "2019-08-24T14:15:22Z",
"path": "string"
}
],
"files_manifest": [
{
"byte_size": 0,
"content_type": "string",
"path": "string"
}
],
"frontmatter_extra": {
"property1": null,
"property2": null
},
"id": "string",
"name": "string",
"object": "string",
"skill_id": "string",
"source_ref": "string",
"source_url": "string",
"total_bytes": 0,
"user_invocable": true,
"version": "string"
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Get a specific skill version.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Version number
Response Body
application/json
application/json
curl -X GET "https://loading/api/v1/skills/string/versions/string"{
"allowed_tools": [
"string"
],
"argument_hint": "string",
"created_at": 0,
"description": "string",
"disable_model_invocation": true,
"files": [
{
"byte_size": 0,
"content": "string",
"content_type": "string",
"created_at": "2019-08-24T14:15:22Z",
"path": "string"
}
],
"files_manifest": [
{
"byte_size": 0,
"content_type": "string",
"path": "string"
}
],
"frontmatter_extra": {
"property1": null,
"property2": null
},
"id": "string",
"name": "string",
"object": "string",
"skill_id": "string",
"source_ref": "string",
"source_url": "string",
"total_bytes": 0,
"user_invocable": true,
"version": "string"
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Delete a skill version.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Version number
Response Body
application/json
application/json
application/json
curl -X DELETE "https://loading/api/v1/skills/string/versions/string"{
"deleted": true,
"id": "string",
"object": "string",
"version": "string"
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}Download a specific skill version as a zip bundle.
Authorization
api_key API key authentication using Bearer token format
In: header
Path Parameters
Skill id
Version number
Response Body
application/zip
application/json
curl -X GET "https://loading/api/v1/skills/string/versions/string/content"{
"error": {
"code": "budget_exceeded",
"message": "Budget limit exceeded for monthly period",
"param": null,
"request_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "invalid_request_error"
}
}