Request message signing (custody-based with callback)
curl --request POST \
--url https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": "SGVsbG8gV29ybGQh",
"address": "0x...",
"callbackUrl": "https://example.com/callback",
"chainId": 1
}
'import requests
url = "https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs"
payload = {
"message": "SGVsbG8gV29ybGQh",
"address": "0x...",
"callbackUrl": "https://example.com/callback",
"chainId": 1
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: 'SGVsbG8gV29ybGQh',
address: '0x...',
callbackUrl: 'https://example.com/callback',
chainId: 1
})
};
fetch('https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs', 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://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs",
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([
'message' => 'SGVsbG8gV29ybGQh',
'address' => '0x...',
'callbackUrl' => 'https://example.com/callback',
'chainId' => 1
]),
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://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs"
payload := strings.NewReader("{\n \"message\": \"SGVsbG8gV29ybGQh\",\n \"address\": \"0x...\",\n \"callbackUrl\": \"https://example.com/callback\",\n \"chainId\": 1\n}")
req, _ := http.NewRequest("POST", 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.post("https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": \"SGVsbG8gV29ybGQh\",\n \"address\": \"0x...\",\n \"callbackUrl\": \"https://example.com/callback\",\n \"chainId\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": \"SGVsbG8gV29ybGQh\",\n \"address\": \"0x...\",\n \"callbackUrl\": \"https://example.com/callback\",\n \"chainId\": 1\n}"
response = http.request(request)
puts response.read_body{
"requestId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}{
"error": "Invalid address"
}Signature Management
Sign
Submits a request to sign an Ethereum message. Uses private keys securely stored within the custody system. The signing process is asynchronous, as it requires approval from the wallet owner(s) via our Proof of Action (PoA) mechanism.
POST
/
v1
/
signs
Request message signing (custody-based with callback)
curl --request POST \
--url https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": "SGVsbG8gV29ybGQh",
"address": "0x...",
"callbackUrl": "https://example.com/callback",
"chainId": 1
}
'import requests
url = "https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs"
payload = {
"message": "SGVsbG8gV29ybGQh",
"address": "0x...",
"callbackUrl": "https://example.com/callback",
"chainId": 1
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: 'SGVsbG8gV29ybGQh',
address: '0x...',
callbackUrl: 'https://example.com/callback',
chainId: 1
})
};
fetch('https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs', 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://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs",
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([
'message' => 'SGVsbG8gV29ybGQh',
'address' => '0x...',
'callbackUrl' => 'https://example.com/callback',
'chainId' => 1
]),
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://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs"
payload := strings.NewReader("{\n \"message\": \"SGVsbG8gV29ybGQh\",\n \"address\": \"0x...\",\n \"callbackUrl\": \"https://example.com/callback\",\n \"chainId\": 1\n}")
req, _ := http.NewRequest("POST", 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.post("https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": \"SGVsbG8gV29ybGQh\",\n \"address\": \"0x...\",\n \"callbackUrl\": \"https://example.com/callback\",\n \"chainId\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://omnisafe.sandbox.ecrop.de/omni-safe/v1/signs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": \"SGVsbG8gV29ybGQh\",\n \"address\": \"0x...\",\n \"callbackUrl\": \"https://example.com/callback\",\n \"chainId\": 1\n}"
response = http.request(request)
puts response.read_body{
"requestId": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}{
"error": "Invalid address"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Response
Signing request accepted.
Unique ID of the signing request.
Example:
"a1b2c3d4-e5f6-7890-1234-567890abcdef"