API reference
Skills
Reusable instructions attached to a turn.
List skills
api.niucore.com/api/v1/skillsScope: skills:read
Skills visible to the credential: its own, the company's, and those shared with the user.
Query
pageintegerdefaults to 1Page number, starting at 1.
sizeintegerdefaults to 50Items per page. Maximum 200.
curl -sS -X GET 'https://api.niucore.com/api/v1/skills' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN"{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": [
{
"id": 147,
"name": "Redactar respuesta a cliente",
"description": "Tono formal, máximo tres párrafos.",
"instructions": "Respondé al cliente con tono formal…",
"icon": "mail",
"level": "company",
"visibility": "public",
"workspace_id": null,
"is_active": true,
"created_at": "2026-07-02T11:14:29Z"
}
],
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77",
"page": 1,
"size": 50,
"total": 1
}
}Create a skill
api.niucore.com/api/v1/skillsScope: skills:write
Creates a skill. Returns 201.
Request body
namestringrequiredUp to 255 characters.
instructionsstringrequiredThe instructions the model receives when the skill is attached. Up to 12,000 characters. It can cite libraries, files, connectors, tools and other skills with {{type:id}}: see Resource references.
descriptionstringUp to 500 characters.
iconstringIcon.
levelstringdefaults to personalScope of the skill.
personalcompanyworkspace
visibilitystringdefaults to publicWho can see it.
publicprivateshared
workspace_idintegerOwning library, with level: "workspace". It must be within scope.
shared_user_idsinteger[]Users granted access, with visibility: "shared". They must belong to the same company; the ids come from `GET /users`.
Errors
- 403
api_v1_resource_policy_create_deniedThe credential is limited to specific resources (allowlist) and cannot create new ones of this type. - 422
prompt_refs_invalidinstructionscites resources that do not exist, that the user cannot use, or that this type does not accept.data[0]groups them by category and nothing is saved. See Resource references. - 422
prompt_text_too_longinstructionsexceeds 12 000 characters. - 403
api_v1_resource_not_allowedTheworkspace_idor one ofshared_user_idsis outside the scope.
curl -sS -X POST 'https://api.niucore.com/api/v1/skills' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Redactar respuesta a cliente",
"instructions": "Respondé al cliente con tono formal, en un máximo de tres párrafos.",
"description": "Tono formal, máximo tres párrafos.",
"level": "company",
"visibility": "public"
}'{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": {
"id": 147,
"name": "Redactar respuesta a cliente",
"description": "Tono formal, máximo tres párrafos.",
"instructions": "Respondé al cliente con tono formal…",
"icon": "mail",
"level": "company",
"visibility": "public",
"workspace_id": null,
"is_active": true,
"created_at": "2026-07-02T11:14:29Z"
},
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77"
}
}Retrieve a skill
api.niucore.com/api/v1/skills /{skill_id}Scope: skills:read
Detail of one skill.
Path
skill_idintegerrequiredIdentifier.
Errors
- 404
api_v1_not_foundIt does not exist, or it is outside the credential's scope. Both cases answer the same: a403would confirm the resource exists.
curl -sS -X GET 'https://api.niucore.com/api/v1/skills/147' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN"{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": {
"id": 147,
"name": "Redactar respuesta a cliente",
"description": "Tono formal, máximo tres párrafos.",
"instructions": "Respondé al cliente con tono formal…",
"icon": "mail",
"level": "company",
"visibility": "public",
"workspace_id": null,
"is_active": true,
"created_at": "2026-07-02T11:14:29Z"
},
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77"
}
}Update a skill
api.niucore.com/api/v1/skills /{skill_id}Scope: skills:write
Updates the fields sent. level is not editable: a skill does not change scope.
Path
skill_idintegerrequiredIdentifier.
Request body
namestringNew name.
instructionsstringNew instructions. If they change, all their {{type:id}} references are revalidated.
descriptionstringDescription.
iconstringIcon.
visibilitystringNew visibility.
publicprivateshared
workspace_idintegerOwning library.
shared_user_idsinteger[]Replaces the shared list. The ids come from `GET /users`.
Errors
- 404
api_v1_not_foundIt does not exist, or it is outside the credential's scope. Both cases answer the same: a403would confirm the resource exists. - 422
prompt_refs_invalidinstructionscites resources that do not exist, that the user cannot use, or that this type does not accept.data[0]groups them by category and nothing is saved. See Resource references. - 422
prompt_text_too_longinstructionsexceeds 12 000 characters.
curl -sS -X PATCH 'https://api.niucore.com/api/v1/skills/147' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "Tono formal, máximo dos párrafos."
}'{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": {
"id": 147,
"name": "Redactar respuesta a cliente",
"description": "Tono formal, máximo dos párrafos.",
"instructions": "Respondé al cliente con tono formal…",
"icon": "mail",
"level": "company",
"visibility": "public",
"workspace_id": null,
"is_active": true,
"created_at": "2026-07-02T11:14:29Z"
},
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77"
}
}Enable or disable
api.niucore.com/api/v1/skills /{skill_id} /toggleScope: skills:write
Flips the active state. It takes no body: the new value is always the opposite of the current one.
Path
skill_idintegerrequiredIdentifier.
Errors
- 404
api_v1_not_foundIt does not exist, or it is outside the credential's scope. Both cases answer the same: a403would confirm the resource exists.
curl -sS -X PATCH 'https://api.niucore.com/api/v1/skills/147/toggle' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN"{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": {
"id": 147,
"name": "Redactar respuesta a cliente",
"description": "Tono formal, máximo tres párrafos.",
"instructions": "Respondé al cliente con tono formal…",
"icon": "mail",
"level": "company",
"visibility": "public",
"workspace_id": null,
"is_active": false,
"created_at": "2026-07-02T11:14:29Z"
},
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77"
}
}Delete a skill
api.niucore.com/api/v1/skills /{skill_id}Scope: skills:write
Soft delete.
Path
skill_idintegerrequiredIdentifier.
Errors
- 404
api_v1_not_foundIt does not exist, or it is outside the credential's scope. Both cases answer the same: a403would confirm the resource exists.
curl -sS -X DELETE 'https://api.niucore.com/api/v1/skills/147' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN"{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": {
"id": 147
},
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77"
}
}