Registers a full `appData` so it can be referenced by `appDataHash`.
Uploads a full appData to orderbook so that orders created with the corresponding appDataHash can be linked to the original full appData.
PUT
/
api
/
v1
/
app_data
/
{app_data_hash}
Registers a full `appData` so it can be referenced by `appDataHash`.
curl --request PUT \
--url https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash} \
--header 'Content-Type: application/json' \
--data '
{
"fullAppData": "{\"version\":\"0.9.0\",\"metadata\":{}}"
}
'import requests
url = "https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}"
payload = { "fullAppData": "{\"version\":\"0.9.0\",\"metadata\":{}}" }
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({fullAppData: '{"version":"0.9.0","metadata":{}}'})
};
fetch('https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}', 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.cow.fi/mainnet/api/v1/app_data/{app_data_hash}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'fullAppData' => '{"version":"0.9.0","metadata":{}}'
]),
CURLOPT_HTTPHEADER => [
"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.cow.fi/mainnet/api/v1/app_data/{app_data_hash}"
payload := strings.NewReader("{\n \"fullAppData\": \"{\\\"version\\\":\\\"0.9.0\\\",\\\"metadata\\\":{}}\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}")
.header("Content-Type", "application/json")
.body("{\n \"fullAppData\": \"{\\\"version\\\":\\\"0.9.0\\\",\\\"metadata\\\":{}}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"fullAppData\": \"{\\\"version\\\":\\\"0.9.0\\\",\\\"metadata\\\":{}}\"\n}"
response = http.request(request)
puts response.read_body"0x0000000000000000000000000000000000000000000000000000000000000000""0x0000000000000000000000000000000000000000000000000000000000000000"Path Parameters
32 bytes encoded as hex with 0x prefix.
It's expected to be the hash of the stringified JSON object representing the appData.
Example:
"0x0000000000000000000000000000000000000000000000000000000000000000"
Body
application/json
The appData document to upload.
Response
The full appData already exists.
32 bytes encoded as hex with 0x prefix.
It's expected to be the hash of the stringified JSON object representing the appData.
Example:
"0x0000000000000000000000000000000000000000000000000000000000000000"
Last modified on March 17, 2026
Was this page helpful?
Registers a full `appData` so it can be referenced by `appDataHash`.
curl --request PUT \
--url https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash} \
--header 'Content-Type: application/json' \
--data '
{
"fullAppData": "{\"version\":\"0.9.0\",\"metadata\":{}}"
}
'import requests
url = "https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}"
payload = { "fullAppData": "{\"version\":\"0.9.0\",\"metadata\":{}}" }
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({fullAppData: '{"version":"0.9.0","metadata":{}}'})
};
fetch('https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}', 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.cow.fi/mainnet/api/v1/app_data/{app_data_hash}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'fullAppData' => '{"version":"0.9.0","metadata":{}}'
]),
CURLOPT_HTTPHEADER => [
"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.cow.fi/mainnet/api/v1/app_data/{app_data_hash}"
payload := strings.NewReader("{\n \"fullAppData\": \"{\\\"version\\\":\\\"0.9.0\\\",\\\"metadata\\\":{}}\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}")
.header("Content-Type", "application/json")
.body("{\n \"fullAppData\": \"{\\\"version\\\":\\\"0.9.0\\\",\\\"metadata\\\":{}}\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cow.fi/mainnet/api/v1/app_data/{app_data_hash}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"fullAppData\": \"{\\\"version\\\":\\\"0.9.0\\\",\\\"metadata\\\":{}}\"\n}"
response = http.request(request)
puts response.read_body"0x0000000000000000000000000000000000000000000000000000000000000000""0x0000000000000000000000000000000000000000000000000000000000000000"