curl --request PATCH \
--url https://api.woodwide.ai/models/{model_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>"
}
'import requests
url = "https://api.woodwide.ai/models/{model_id}"
payload = {
"name": "<string>",
"description": "<string>"
}
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>', description: '<string>'})
};
fetch('https://api.woodwide.ai/models/{model_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.woodwide.ai/models/{model_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([
'name' => '<string>',
'description' => '<string>'
]),
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.woodwide.ai/models/{model_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\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.woodwide.ai/models/{model_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.woodwide.ai/models/{model_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 \"name\": \"<string>\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"model_id": "b2c3d4e5-0000-0000-0000-000000000001",
"model_type": "prediction",
"status": "ready",
"current_metrics": {
"accuracy": 0.98
},
"current_version": {
"version_id": "b2c3d4e5-0000-0000-0000-000000000002",
"version": 1,
"status": "ready",
"metrics": {
"accuracy": 0.98
}
},
"training_dataset_id": "a1b2c3d4-0000-0000-0000-000000000001",
"training_dataset_name": "retention_customers",
"label_column": "churnReason",
"created_at": "2025-01-15T11:00:00Z",
"updated_at": "2025-01-15T11:05:00Z"
}{
"detail": "Not authenticated"
}{
"detail": "Forbidden"
}{
"detail": "Not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Rate limit exceeded. Retry after a short delay."
}Update Model Metadata
Update model metadata (name, description).
curl --request PATCH \
--url https://api.woodwide.ai/models/{model_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>"
}
'import requests
url = "https://api.woodwide.ai/models/{model_id}"
payload = {
"name": "<string>",
"description": "<string>"
}
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>', description: '<string>'})
};
fetch('https://api.woodwide.ai/models/{model_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.woodwide.ai/models/{model_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([
'name' => '<string>',
'description' => '<string>'
]),
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.woodwide.ai/models/{model_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\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.woodwide.ai/models/{model_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.woodwide.ai/models/{model_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 \"name\": \"<string>\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"model_id": "b2c3d4e5-0000-0000-0000-000000000001",
"model_type": "prediction",
"status": "ready",
"current_metrics": {
"accuracy": 0.98
},
"current_version": {
"version_id": "b2c3d4e5-0000-0000-0000-000000000002",
"version": 1,
"status": "ready",
"metrics": {
"accuracy": 0.98
}
},
"training_dataset_id": "a1b2c3d4-0000-0000-0000-000000000001",
"training_dataset_name": "retention_customers",
"label_column": "churnReason",
"created_at": "2025-01-15T11:00:00Z",
"updated_at": "2025-01-15T11:05:00Z"
}{
"detail": "Not authenticated"
}{
"detail": "Forbidden"
}{
"detail": "Not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}{
"detail": "Rate limit exceeded. Retry after a short delay."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful Response
Model response model.
Canonical model types supported by the platform.
prediction-- Supervised prediction (classification or regression) on a target column.anomaly-- Unsupervised anomaly detection. Returns anomaly scores and anomalous row IDs.embedding-- Generate dense vector embeddings for each row.clustering-- Unsupervised clustering. Returns cluster labels and descriptions.factors-- Factor analysis / dimensionality reduction.search-- Semantic nearest-neighbor search over the training dataset.causal-- Causal effect estimation. Train with the outcome aslabel_column(the treatment is named viaparams.action_columnor inferred at training time), then estimate effects withPOST /models/{model_id}/estimate-causal-effect.
prediction, anomaly, embedding, clustering, factors, search, causal Aggregated from the current version: ready, processing, or failed.
Validation metrics from the current (latest) version, promoted for convenience. Keys depend on model type: prediction (classification): accuracy (0–1). prediction (regression): r2 (R-squared). clustering: n_clusters, silhouette_score (−1 to 1). Other model types do not produce metrics.
Show child attributes
Show child attributes
Current version summary embedded in the Model response.
Show child attributes
Show child attributes
Dataset used to train the current version (if known).
Display name of the training dataset for the current version.
Target column used to train the current version (prediction models only). Omitted for other model types.
Was this page helpful?