curl --request PATCH \
--url https://api.iwy.ai/v1/tool/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "Fetches current weather and 3-day forecast",
"timeout_seconds": 20
}
'import requests
url = "https://api.iwy.ai/v1/tool/{id}"
payload = {
"description": "Fetches current weather and 3-day forecast",
"timeout_seconds": 20
}
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({description: 'Fetches current weather and 3-day forecast', timeout_seconds: 20})
};
fetch('https://api.iwy.ai/v1/tool/{id}', 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.iwy.ai/v1/tool/{id}",
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([
'description' => 'Fetches current weather and 3-day forecast',
'timeout_seconds' => 20
]),
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.iwy.ai/v1/tool/{id}"
payload := strings.NewReader("{\n \"description\": \"Fetches current weather and 3-day forecast\",\n \"timeout_seconds\": 20\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.iwy.ai/v1/tool/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"Fetches current weather and 3-day forecast\",\n \"timeout_seconds\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.iwy.ai/v1/tool/{id}")
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 \"description\": \"Fetches current weather and 3-day forecast\",\n \"timeout_seconds\": 20\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "get_weather",
"description": "Fetches the current weather for a given city",
"server_url": "https://webhook.example.com/weather",
"parameters_schema": {
"type": "object",
"required": [
"city"
],
"properties": {
"city": {
"type": "string",
"description": "The name of the city"
}
},
"additionalProperties": false
},
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "your-key"
},
"timeout_seconds": 20,
"is_async": false,
"strict_params": true,
"auth_config": {},
"tags": [
"<string>"
]
}{
"success": false,
"error": "Bad request",
"details": "Missing required field: name"
}{
"success": false,
"error": "Unauthorized",
"details": "Invalid or missing API key"
}{
"success": false,
"error": "Not found",
"details": "The requested resource does not exist"
}{
"success": false,
"error": "Internal server error",
"details": "An unexpected error occurred"
}Update tool configuration
Updates the configuration of an existing tool. You can modify the parameters schema, webhook URL, headers, and other settings.
curl --request PATCH \
--url https://api.iwy.ai/v1/tool/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "Fetches current weather and 3-day forecast",
"timeout_seconds": 20
}
'import requests
url = "https://api.iwy.ai/v1/tool/{id}"
payload = {
"description": "Fetches current weather and 3-day forecast",
"timeout_seconds": 20
}
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({description: 'Fetches current weather and 3-day forecast', timeout_seconds: 20})
};
fetch('https://api.iwy.ai/v1/tool/{id}', 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.iwy.ai/v1/tool/{id}",
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([
'description' => 'Fetches current weather and 3-day forecast',
'timeout_seconds' => 20
]),
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.iwy.ai/v1/tool/{id}"
payload := strings.NewReader("{\n \"description\": \"Fetches current weather and 3-day forecast\",\n \"timeout_seconds\": 20\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.iwy.ai/v1/tool/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"Fetches current weather and 3-day forecast\",\n \"timeout_seconds\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.iwy.ai/v1/tool/{id}")
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 \"description\": \"Fetches current weather and 3-day forecast\",\n \"timeout_seconds\": 20\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "get_weather",
"description": "Fetches the current weather for a given city",
"server_url": "https://webhook.example.com/weather",
"parameters_schema": {
"type": "object",
"required": [
"city"
],
"properties": {
"city": {
"type": "string",
"description": "The name of the city"
}
},
"additionalProperties": false
},
"method": "POST",
"headers": {
"Content-Type": "application/json",
"x-api-key": "your-key"
},
"timeout_seconds": 20,
"is_async": false,
"strict_params": true,
"auth_config": {},
"tags": [
"<string>"
]
}{
"success": false,
"error": "Bad request",
"details": "Missing required field: name"
}{
"success": false,
"error": "Unauthorized",
"details": "Invalid or missing API key"
}{
"success": false,
"error": "Not found",
"details": "The requested resource does not exist"
}{
"success": false,
"error": "Internal server error",
"details": "An unexpected error occurred"
}Authorizations
Your iwy Service API Key. Find it at app.iwy.ai/settings.
Include it in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Path Parameters
The unique identifier (UUID) of the tool
Body
Fields to update (all optional)
Response
Tool updated successfully
Complete tool configuration
Unique identifier for the tool
ID of the user who owns this tool
Function name (snake_case)
"get_weather"
Clear explanation of what the tool does
"Fetches the current weather for a given city"
Webhook endpoint URL
"https://webhook.example.com/weather"
JSON Schema defining the tool's parameters
{
"type": "object",
"required": ["city"],
"properties": {
"city": {
"type": "string",
"description": "The name of the city"
}
},
"additionalProperties": false
}
HTTP method
POST, GET, PUT, PATCH, DELETE Custom HTTP headers
{
"Content-Type": "application/json",
"x-api-key": "your-key"
}
Request timeout in seconds
1 <= x <= 300Whether the tool runs asynchronously
Whether to strictly validate parameters
Authentication configuration
Tags for organization