curl --request PUT \
--url https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"signing_request_email_header": "<string>",
"signing_request_email_body": "<string>",
"team_email": "jsmith@example.com",
"timezone": "<string>",
"show_credit_cost_in_editor": true,
"require_otp_verification": true
}
'import requests
url = "https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings"
payload = {
"signing_request_email_header": "<string>",
"signing_request_email_body": "<string>",
"team_email": "jsmith@example.com",
"timezone": "<string>",
"show_credit_cost_in_editor": True,
"require_otp_verification": True
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
signing_request_email_header: '<string>',
signing_request_email_body: '<string>',
team_email: 'jsmith@example.com',
timezone: '<string>',
show_credit_cost_in_editor: true,
require_otp_verification: true
})
};
fetch('https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings', 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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings",
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([
'signing_request_email_header' => '<string>',
'signing_request_email_body' => '<string>',
'team_email' => 'jsmith@example.com',
'timezone' => '<string>',
'show_credit_cost_in_editor' => true,
'require_otp_verification' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings"
payload := strings.NewReader("{\n \"signing_request_email_header\": \"<string>\",\n \"signing_request_email_body\": \"<string>\",\n \"team_email\": \"jsmith@example.com\",\n \"timezone\": \"<string>\",\n \"show_credit_cost_in_editor\": true,\n \"require_otp_verification\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"signing_request_email_header\": \"<string>\",\n \"signing_request_email_body\": \"<string>\",\n \"team_email\": \"jsmith@example.com\",\n \"timezone\": \"<string>\",\n \"show_credit_cost_in_editor\": true,\n \"require_otp_verification\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"signing_request_email_header\": \"<string>\",\n \"signing_request_email_body\": \"<string>\",\n \"team_email\": \"jsmith@example.com\",\n \"timezone\": \"<string>\",\n \"show_credit_cost_in_editor\": true,\n \"require_otp_verification\": true\n}"
response = http.request(request)
puts response.read_body{
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"team_email": "jsmith@example.com",
"timezone": "<string>",
"language": "en",
"signing_request_email_header": "<string>",
"signing_request_email_body": "<string>",
"show_credit_cost_in_editor": true,
"require_otp_verification": true
}{
"error": "Validation Error",
"message": "Invalid input data",
"details": {
"name": "Name is required",
"email": "Invalid email format"
}
}{
"error": "Unauthorized",
"message": "Invalid API key"
}{
"error": "Not Found",
"message": "The requested resource was not found"
}{
"error": "Rate Limit Exceeded",
"message": "Too many requests. Please wait before retrying.",
"details": {
"retry_after": 45
}
}Update workspace settings
Update workspace settings
curl --request PUT \
--url https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"signing_request_email_header": "<string>",
"signing_request_email_body": "<string>",
"team_email": "jsmith@example.com",
"timezone": "<string>",
"show_credit_cost_in_editor": true,
"require_otp_verification": true
}
'import requests
url = "https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings"
payload = {
"signing_request_email_header": "<string>",
"signing_request_email_body": "<string>",
"team_email": "jsmith@example.com",
"timezone": "<string>",
"show_credit_cost_in_editor": True,
"require_otp_verification": True
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
signing_request_email_header: '<string>',
signing_request_email_body: '<string>',
team_email: 'jsmith@example.com',
timezone: '<string>',
show_credit_cost_in_editor: true,
require_otp_verification: true
})
};
fetch('https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings', 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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings",
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([
'signing_request_email_header' => '<string>',
'signing_request_email_body' => '<string>',
'team_email' => 'jsmith@example.com',
'timezone' => '<string>',
'show_credit_cost_in_editor' => true,
'require_otp_verification' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings"
payload := strings.NewReader("{\n \"signing_request_email_header\": \"<string>\",\n \"signing_request_email_body\": \"<string>\",\n \"team_email\": \"jsmith@example.com\",\n \"timezone\": \"<string>\",\n \"show_credit_cost_in_editor\": true,\n \"require_otp_verification\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"signing_request_email_header\": \"<string>\",\n \"signing_request_email_body\": \"<string>\",\n \"team_email\": \"jsmith@example.com\",\n \"timezone\": \"<string>\",\n \"show_credit_cost_in_editor\": true,\n \"require_otp_verification\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firma.dev/functions/v1/signing-request-api/workspace/{workspace_id}/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"signing_request_email_header\": \"<string>\",\n \"signing_request_email_body\": \"<string>\",\n \"team_email\": \"jsmith@example.com\",\n \"timezone\": \"<string>\",\n \"show_credit_cost_in_editor\": true,\n \"require_otp_verification\": true\n}"
response = http.request(request)
puts response.read_body{
"workspace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"team_email": "jsmith@example.com",
"timezone": "<string>",
"language": "en",
"signing_request_email_header": "<string>",
"signing_request_email_body": "<string>",
"show_credit_cost_in_editor": true,
"require_otp_verification": true
}{
"error": "Validation Error",
"message": "Invalid input data",
"details": {
"name": "Name is required",
"email": "Invalid email format"
}
}{
"error": "Unauthorized",
"message": "Invalid API key"
}{
"error": "Not Found",
"message": "The requested resource was not found"
}{
"error": "Rate Limit Exceeded",
"message": "Too many requests. Please wait before retrying.",
"details": {
"retry_after": 45
}
}Authorizations
API key for authentication. Use your API key directly without any prefix (e.g., 'your-api-key'). Bearer prefix is optional but not required.
Path Parameters
Body
Workspace language for email templates
en, es, it, pt, fr, de, el Whether to display credit cost in embedded editors
Whether signers must verify their email via OTP. null = inherit from company
Response
Workspace settings updated successfully
Workspace name
Workspace contact email
Workspace timezone
Workspace language for email templates
en, es, it, pt, fr, de, el Custom email header text
Custom HTML email body
Whether to display credit cost in embedded template and signing request editors
Whether signers must verify their email via OTP before accessing documents. null = inherit from company setting, true = require OTP, false = do not require OTP
Was this page helpful?