Skip to main content
PATCH
/
skills
/
v1
/
{skillId}
Update a Skill
curl --request PATCH \
  --url https://api.langdock.com/skills/v1/{skillId} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "slug": "<string>",
  "description": "<string>",
  "instructions": "<string>",
  "integrationIds": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ]
}
'
import requests

url = "https://api.langdock.com/skills/v1/{skillId}"

payload = {
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"instructions": "<string>",
"integrationIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
slug: '<string>',
description: '<string>',
instructions: '<string>',
integrationIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']
})
};

fetch('https://api.langdock.com/skills/v1/{skillId}', 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://api.langdock.com/skills/v1/{skillId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'slug' => '<string>',
'description' => '<string>',
'instructions' => '<string>',
'integrationIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
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://api.langdock.com/skills/v1/{skillId}"

payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"integrationIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")

req, _ := http.NewRequest("PATCH", 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.patch("https://api.langdock.com/skills/v1/{skillId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"integrationIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.langdock.com/skills/v1/{skillId}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"integrationIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "skill": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "name": "<string>",
    "slug": "<string>",
    "description": "<string>",
    "instructions": "<string>",
    "integrationIds": [
      "3c90c3cc-0d44-4b50-8888-8dd25736052a"
    ],
    "createdAt": "2023-11-07T05:31:56Z",
    "updatedAt": "2023-11-07T05:31:56Z"
  }
}
Using our API via a dedicated deployment? Just replace api.langdock.com with your deployment’s base URL: <deployment-url>/api/public
Updates an existing Skill in your workspace. Only include the fields you want to change.

Required Scopes

This endpoint requires the SKILL_API scope.
Requires editor access to the Skill.

Path Parameters

ParameterTypeRequiredDescription
skillIdstringYesUUID of the Skill to update.

Request Body

ParameterTypeDescription
namestringSkill name. Maximum: 64 characters.
slugstringStable Skill slug. Must use lowercase letters, numbers, and dashes. Maximum: 100 characters.
descriptionstringDescription used to explain when the Skill should apply. Maximum: 1024 characters.
instructionsstringSkill instructions. Maximum: 50000 characters.
integrationIdsstring[]Integration UUIDs to attach to the Skill. Replaces the current integration list. Each integration must be enabled in your workspace.

Example

const axios = require("axios");

async function updateSkill(skillId) {
  const response = await axios.patch(
    `https://api.langdock.com/skills/v1/${skillId}`,
    {
      description: "Applies the support team's latest tone and escalation rules.",
      instructions: "Write concise replies, include the next best action, and escalate billing or security issues to the account owner."
    },
    {
      headers: {
        Authorization: "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
      }
    }
  );

  console.log("Updated Skill:", response.data.skill.updatedAt);
}

updateSkill("550e8400-e29b-41d4-a716-446655440000");

Response Format

Success Response (200 OK)

{
  skill: {
    id: string;
    name: string;
    slug: string;
    description: string;
    instructions: string;
    integrationIds: string[];
    createdAt: string;
    updatedAt: string;
  };
}

Error Handling

Status CodeDescription
400Invalid request body, missing update fields, or inaccessible integrationIds
401Invalid or missing API key
403Missing SKILL_API scope, Skills product access, or editor access
404Skill not found
409Skill slug conflict
429Rate limit exceeded
500Internal server error
Langdock intentionally blocks browser-origin requests to protect your API key and ensure your applications remain secure. For more information, please see our guide on API Key Best Practices.

Authorizations

Authorization
string
header
required

API key as Bearer token. Format "Bearer YOUR_API_KEY"

Path Parameters

skillId
string<uuid>
required

UUID of the Skill.

Body

application/json
name
string

Skill name.

Required string length: 1 - 64
slug
string

Stable Skill slug.

Maximum string length: 100
Pattern: ^[a-z0-9-]+$
description
string

Description used to explain when the Skill should apply.

Maximum string length: 1024
instructions
string

Skill instructions.

Required string length: 1 - 50000
integrationIds
string<uuid>[]

Integration IDs to attach to the Skill. Replaces the current integration list.

Response

Skill updated successfully

skill
object
required