import requests
url = "https://api.datagrid.com/v1/skills"
payload = {
"name": "<string>",
"slash_key": "<string>",
"instructions": "<string>",
"description": "<string>",
"required_tools": ["<string>"],
"preferred_tools": ["<string>"],
"enabled": True,
"scope": "account"
}
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>',
slash_key: '<string>',
instructions: '<string>',
description: '<string>',
required_tools: ['<string>'],
preferred_tools: ['<string>'],
enabled: true,
scope: 'account'
})
};
fetch('https://api.datagrid.com/v1/skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://api.datagrid.com/v1/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slash_key": "<string>",
"instructions": "<string>",
"description": "<string>",
"required_tools": [
"<string>"
],
"preferred_tools": [
"<string>"
],
"enabled": true,
"scope": "account"
}
'{
"object": "skill",
"id": "<string>",
"scope": "user",
"category": "document_analysis",
"slash_key": "<string>",
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"required_tools": [
"<string>"
],
"preferred_tools": [
"<string>"
],
"enabled": true,
"account_id": "<string>",
"builtin_key": "<string>",
"promoted_at": "2023-11-07T05:31:56Z",
"creator_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"status_code": 123,
"error": "rate_limit_exceeded",
"message": "<string>",
"retryable": true,
"statusCode": 123,
"mitigation": "<string>",
"details": {
"reason": "<string>"
}
}Create skill
Create a skill. Defaults to Public (account) privacy with an initial invocation assignment to the API key’s teamspace; creation and assignment are atomic, and the returned scope remains account. Pass scope: user to create a Private skill without an initial assignment. Public slash keys must not collide with a built-in.
import requests
url = "https://api.datagrid.com/v1/skills"
payload = {
"name": "<string>",
"slash_key": "<string>",
"instructions": "<string>",
"description": "<string>",
"required_tools": ["<string>"],
"preferred_tools": ["<string>"],
"enabled": True,
"scope": "account"
}
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>',
slash_key: '<string>',
instructions: '<string>',
description: '<string>',
required_tools: ['<string>'],
preferred_tools: ['<string>'],
enabled: true,
scope: 'account'
})
};
fetch('https://api.datagrid.com/v1/skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://api.datagrid.com/v1/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slash_key": "<string>",
"instructions": "<string>",
"description": "<string>",
"required_tools": [
"<string>"
],
"preferred_tools": [
"<string>"
],
"enabled": true,
"scope": "account"
}
'{
"object": "skill",
"id": "<string>",
"scope": "user",
"category": "document_analysis",
"slash_key": "<string>",
"name": "<string>",
"description": "<string>",
"instructions": "<string>",
"required_tools": [
"<string>"
],
"preferred_tools": [
"<string>"
],
"enabled": true,
"account_id": "<string>",
"builtin_key": "<string>",
"promoted_at": "2023-11-07T05:31:56Z",
"creator_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"status_code": 123,
"error": "rate_limit_exceeded",
"message": "<string>",
"retryable": true,
"statusCode": 123,
"mitigation": "<string>",
"details": {
"reason": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Display name of the skill.
255The slash command key (e.g. budget-check, 3d-review). Must use lowercase letters, digits, and single dashes, start and end with a letter or digit, and be unique within the scope.
1 - 64^(?!.*--)[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$The full instructions / system prompt for this skill.
Category bucket.
document_analysis, construction_project_management, financial_analysis, estimation, quality_and_safety, scheduling, contracts_and_legal, data_and_reporting, research, communication, general_productivity Short description. When omitted, an AI-generated description is produced from the instructions.
1000Tool identifiers required by this skill.
Tool identifiers preferred by this skill.
Whether the skill is active. Defaults to true.
Ownership of the new skill. Defaults to account (company-owned). Pass user for a private skill that can later be promoted.
user, account Response
Created skill
The object type, always 'skill'.
skill Unique identifier for the skill.
Privacy scope. user = Private (author only), account = Public within the company, teamspace = deprecated legacy Public value retained only for compatibility, and builtin = global default. New skills never use teamspace; changing its privacy or assignments normalizes it.
user, account, teamspace, builtin Category bucket for grouping in the skill picker.
document_analysis, construction_project_management, financial_analysis, estimation, quality_and_safety, scheduling, contracts_and_legal, data_and_reporting, research, communication, general_productivity The slash command key used to invoke this skill (e.g. budget-check).
Display name of the skill.
Short description shown in the skill picker.
The full instructions / system prompt for this skill.
Tool identifiers that this skill requires to function.
Tool identifiers that this skill works best with.
Whether the skill is active and available for selection. For a built-in skill, false when your company disabled it.
The account (company) that owns this skill. null for user-scope and builtin skills.
For built-in skills and company copies of them: the identifier of the built-in. null for user-authored skills.
ISO timestamp when this skill was promoted to company scope. null for user-scope skills.
ID of the user who created this skill. null for built-in skills that have never been edited.
ISO timestamp when this skill was created.
ISO timestamp when this skill was last updated.