Get permit messages for wallet
curl --request GET \
--url https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits', 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.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"result": [
{
"supportedAssetId": "aabbccdd-1122-4334-9556-7788990011ab",
"asset": "USDC",
"contractAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"status": "CONFIRMED",
"typedData": {
"types": {
"EIP712Domain": [
{
"name": "name",
"type": "string"
},
{
"name": "version",
"type": "string"
},
{
"name": "chainId",
"type": "uint256"
},
{
"name": "verifyingContract",
"type": "address"
}
],
"Permit": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "nonce",
"type": "uint256"
},
{
"name": "deadline",
"type": "uint256"
}
]
},
"primaryType": "Permit",
"domain": {
"name": "USDC",
"version": "2",
"chainId": 84532,
"verifyingContract": "0x036CbD53842c5426634e7929541eC2318f3dCF7e"
},
"message": {
"owner": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
"spender": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
"value": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
"nonce": 0,
"deadline": "4102444800"
}
}
}
]
}{
"success": false,
"errors": [
{
"code": "invalid-request",
"message": "The request contains invalid parameters."
}
]
}{
"success": false,
"errors": [
{
"code": "unauthenticated",
"message": "Please authenticate to perform this action."
}
]
}{
"success": false,
"errors": [
{
"code": "forbidden",
"message": "You do not have permission to access this resource."
}
]
}{
"success": false,
"errors": [
{
"code": "account-not-found",
"message": "The requested resource was not found."
}
]
}{
"success": false,
"errors": [
{
"code": "internal-error",
"message": "An unexpected error occurred. Please try again later."
}
]
}Permits
Get permit messages
Fetch the EIP-712 typed-data messages to sign for gasless token approvals.
GET
/
accounts
/
{accountId}
/
wallets
/
{walletId}
/
permits
Get permit messages for wallet
curl --request GET \
--url https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits', 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.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.venlyfinance.com/v1/accounts/{accountId}/wallets/{walletId}/permits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"result": [
{
"supportedAssetId": "aabbccdd-1122-4334-9556-7788990011ab",
"asset": "USDC",
"contractAddress": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"status": "CONFIRMED",
"typedData": {
"types": {
"EIP712Domain": [
{
"name": "name",
"type": "string"
},
{
"name": "version",
"type": "string"
},
{
"name": "chainId",
"type": "uint256"
},
{
"name": "verifyingContract",
"type": "address"
}
],
"Permit": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "nonce",
"type": "uint256"
},
{
"name": "deadline",
"type": "uint256"
}
]
},
"primaryType": "Permit",
"domain": {
"name": "USDC",
"version": "2",
"chainId": 84532,
"verifyingContract": "0x036CbD53842c5426634e7929541eC2318f3dCF7e"
},
"message": {
"owner": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
"spender": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
"value": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
"nonce": 0,
"deadline": "4102444800"
}
}
}
]
}{
"success": false,
"errors": [
{
"code": "invalid-request",
"message": "The request contains invalid parameters."
}
]
}{
"success": false,
"errors": [
{
"code": "unauthenticated",
"message": "Please authenticate to perform this action."
}
]
}{
"success": false,
"errors": [
{
"code": "forbidden",
"message": "You do not have permission to access this resource."
}
]
}{
"success": false,
"errors": [
{
"code": "account-not-found",
"message": "The requested resource was not found."
}
]
}{
"success": false,
"errors": [
{
"code": "internal-error",
"message": "An unexpected error occurred. Please try again later."
}
]
}Returns the EIP-2612 permit messages for a self-custody account wallet — one per supported asset, each with a
supportedAssetId and the typedData to sign. Sign typedData with the wallet owner’s key, then submit the signature to grant a gasless allowance. Full flow: Approving transfers without gas.
Self-custody account wallets only — Venly-managed and escrow wallets are permitted automatically. Calling this on a Venly-managed company returns
400 invalid-request (“Permits are only applicable for SELF_CUSTODY companies”). See Approving transfers without gas.Authorizations
OAuth2 client credentials flow. Token endpoints:
Path Parameters
Unique account identifier
Unique wallet identifier
Was this page helpful?
⌘I

