curl --request POST \
--url https://api.beta.getpara.com/v1/wallets \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"userIdentifier": "alice@example.com",
"cosmosPrefix": "cosmos"
}
'import requests
url = "https://api.beta.getpara.com/v1/wallets"
payload = {
"userIdentifier": "alice@example.com",
"cosmosPrefix": "cosmos"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({userIdentifier: 'alice@example.com', cosmosPrefix: 'cosmos'})
};
fetch('https://api.beta.getpara.com/v1/wallets', 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.beta.getpara.com/v1/wallets",
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([
'userIdentifier' => 'alice@example.com',
'cosmosPrefix' => 'cosmos'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.beta.getpara.com/v1/wallets"
payload := strings.NewReader("{\n \"userIdentifier\": \"alice@example.com\",\n \"cosmosPrefix\": \"cosmos\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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.post("https://api.beta.getpara.com/v1/wallets")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"userIdentifier\": \"alice@example.com\",\n \"cosmosPrefix\": \"cosmos\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beta.getpara.com/v1/wallets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"userIdentifier\": \"alice@example.com\",\n \"cosmosPrefix\": \"cosmos\"\n}"
response = http.request(request)
puts response.read_body{
"id": "0a1b2c3d-4e5f-6789-abcd-ef0123456789",
"type": "EVM",
"scheme": "DKLS",
"status": "creating",
"createdAt": "2024-01-15T09:30:00Z",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f...",
"publicKey": "<string>",
"userIdentifier": "alice@example.com",
"userIdentifierType": "EMAIL"
}Create Wallet
Create an EVM, Cosmos, Solana, Stellar, or Sui wallet through the same route. The type selects the chain-specific address and signing behavior; omit scheme to use the default for that wallet type.
curl --request POST \
--url https://api.beta.getpara.com/v1/wallets \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"userIdentifier": "alice@example.com",
"cosmosPrefix": "cosmos"
}
'import requests
url = "https://api.beta.getpara.com/v1/wallets"
payload = {
"userIdentifier": "alice@example.com",
"cosmosPrefix": "cosmos"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({userIdentifier: 'alice@example.com', cosmosPrefix: 'cosmos'})
};
fetch('https://api.beta.getpara.com/v1/wallets', 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.beta.getpara.com/v1/wallets",
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([
'userIdentifier' => 'alice@example.com',
'cosmosPrefix' => 'cosmos'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.beta.getpara.com/v1/wallets"
payload := strings.NewReader("{\n \"userIdentifier\": \"alice@example.com\",\n \"cosmosPrefix\": \"cosmos\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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.post("https://api.beta.getpara.com/v1/wallets")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"userIdentifier\": \"alice@example.com\",\n \"cosmosPrefix\": \"cosmos\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.beta.getpara.com/v1/wallets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"userIdentifier\": \"alice@example.com\",\n \"cosmosPrefix\": \"cosmos\"\n}"
response = http.request(request)
puts response.read_body{
"id": "0a1b2c3d-4e5f-6789-abcd-ef0123456789",
"type": "EVM",
"scheme": "DKLS",
"status": "creating",
"createdAt": "2024-01-15T09:30:00Z",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f...",
"publicKey": "<string>",
"userIdentifier": "alice@example.com",
"userIdentifierType": "EMAIL"
}Authorizations
Your partner secret key (server-side only)
Headers
UUID for request tracing. Para returns one if omitted.
For sponsored transfers, use the durable behavior documented on POST /transfer.
Other POST endpoints use this key for safe retries. If a request with the same key
is received within 24 hours, the original response is returned without re-executing.
Recommended format: UUID v4. Max length 256 characters.
Returns 422 if the same key is reused with a different request body.
Returns 409 if a request with the same key is still being processed.
Replays return the original response, not the latest chain outcome. For a persisted broadcast,
use the returned transactionId with GET transaction history to track its current status.
256Body
Wallet type that selects the chain-specific address and signing behavior
EVM, SOLANA, COSMOS, STELLAR, SUI User identifier. Validation depends on userIdentifierType.
1"alice@example.com"
Type of user identifier
EMAIL, PHONE, CUSTOM_ID, GUEST_ID, DISCORD, TWITTER, TELEGRAM Signature scheme. Defaults to DKLS for EVM and Cosmos, and ED25519 for Solana, Stellar, and Sui. Normally omit this field and let the wallet type select the scheme.
DKLS, CGGMP, ED25519 Bech32 prefix for Cosmos wallets
"cosmos"
Response
Wallet created. The endpoint waits for an address, but status can still be creating; use status, not the presence of address or publicKey, to determine whether key generation is complete.
Unique wallet identifier
"0a1b2c3d-4e5f-6789-abcd-ef0123456789"
Blockchain network type
EVM, SOLANA, COSMOS, STELLAR, SUI "EVM"
Signature scheme
DKLS, CGGMP, ED25519 "DKLS"
creating until key generation completes; ready after it completes. address and publicKey can be present while status is creating.
creating, ready ISO 8601 timestamp
"2024-01-15T09:30:00Z"
Wallet address. It can be present while status is creating.
"0x742d35Cc6634C0532925a3b844Bc9e7595f..."
Public key. It can be present while status is creating.
The user identifier associated with this wallet
"alice@example.com"
Type of user identifier
EMAIL, PHONE, CUSTOM_ID, GUEST_ID, DISCORD, TWITTER, TELEGRAM, FARCASTER