Get Hooks
curl --request POST \
--url https://api.example.com/api/hooks \
--header 'Content-Type: application/json' \
--data '
{
"project_dir": "<string>"
}
'import requests
url = "https://api.example.com/api/hooks"
payload = { "project_dir": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({project_dir: '<string>'})
};
fetch('https://api.example.com/api/hooks', 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.example.com/api/hooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'project_dir' => '<string>'
]),
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.example.com/api/hooks"
payload := strings.NewReader("{\n \"project_dir\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/api/hooks")
.header("Content-Type", "application/json")
.body("{\n \"project_dir\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/hooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"project_dir\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"hook_config": {
"pre_tool_use": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"post_tool_use": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"user_prompt_submit": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"session_start": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"session_end": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"stop": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Hooks
Get Hooks
Load hooks from the workspace .openhands/hooks.json file.
This endpoint reads the hooks configuration from the project’s .openhands/hooks.json file if it exists.
Args: request: HooksRequest containing the project directory path.
Returns: HooksResponse containing the hook configuration or None.
POST
/
api
/
hooks
Get Hooks
curl --request POST \
--url https://api.example.com/api/hooks \
--header 'Content-Type: application/json' \
--data '
{
"project_dir": "<string>"
}
'import requests
url = "https://api.example.com/api/hooks"
payload = { "project_dir": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({project_dir: '<string>'})
};
fetch('https://api.example.com/api/hooks', 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.example.com/api/hooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'project_dir' => '<string>'
]),
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.example.com/api/hooks"
payload := strings.NewReader("{\n \"project_dir\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/api/hooks")
.header("Content-Type", "application/json")
.body("{\n \"project_dir\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/hooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"project_dir\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"hook_config": {
"pre_tool_use": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"post_tool_use": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"user_prompt_submit": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"session_start": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"session_end": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
],
"stop": [
{
"matcher": "*",
"hooks": [
{
"command": "<string>",
"type": "command",
"timeout": 60
}
]
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Body
application/json
Request body for loading hooks.
Workspace directory path for project hooks
Response
Successful Response
Response containing hooks configuration.
Hook configuration loaded from the workspace, or None if not found
Show child attributes
Show child attributes
Was this page helpful?
⌘I

