Intra Account Transfer
curl --request POST \
--url https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer \
--header 'Content-Type: application/json' \
--header 'KALSHI-ACCESS-KEY: <api-key>' \
--data '
{
"amount": 123,
"client_transfer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_exchange_shard": 0,
"destination_exchange_shard": 0
}
'import requests
url = "https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer"
payload = {
"amount": 123,
"client_transfer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_exchange_shard": 0,
"destination_exchange_shard": 0
}
headers = {
"KALSHI-ACCESS-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'KALSHI-ACCESS-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 123,
client_transfer_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
source_exchange_shard: 0,
destination_exchange_shard: 0
})
};
fetch('https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer', 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://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer",
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([
'amount' => 123,
'client_transfer_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'source_exchange_shard' => 0,
'destination_exchange_shard' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"KALSHI-ACCESS-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://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer"
payload := strings.NewReader("{\n \"amount\": 123,\n \"client_transfer_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"source_exchange_shard\": 0,\n \"destination_exchange_shard\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("KALSHI-ACCESS-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://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer")
.header("KALSHI-ACCESS-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"client_transfer_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"source_exchange_shard\": 0,\n \"destination_exchange_shard\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["KALSHI-ACCESS-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 123,\n \"client_transfer_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"source_exchange_shard\": 0,\n \"destination_exchange_shard\": 0\n}"
response = http.request(request)
puts response.read_body{
"transfer_id": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}portfolio
Intra Account Transfer
Endpoint for transferring funds within the same account.
POST
/
portfolio
/
intra_exchange_instance_transfer
Intra Account Transfer
curl --request POST \
--url https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer \
--header 'Content-Type: application/json' \
--header 'KALSHI-ACCESS-KEY: <api-key>' \
--data '
{
"amount": 123,
"client_transfer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_exchange_shard": 0,
"destination_exchange_shard": 0
}
'import requests
url = "https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer"
payload = {
"amount": 123,
"client_transfer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_exchange_shard": 0,
"destination_exchange_shard": 0
}
headers = {
"KALSHI-ACCESS-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'KALSHI-ACCESS-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 123,
client_transfer_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
source_exchange_shard: 0,
destination_exchange_shard: 0
})
};
fetch('https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer', 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://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer",
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([
'amount' => 123,
'client_transfer_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'source_exchange_shard' => 0,
'destination_exchange_shard' => 0
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"KALSHI-ACCESS-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://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer"
payload := strings.NewReader("{\n \"amount\": 123,\n \"client_transfer_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"source_exchange_shard\": 0,\n \"destination_exchange_shard\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("KALSHI-ACCESS-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://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer")
.header("KALSHI-ACCESS-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"client_transfer_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"source_exchange_shard\": 0,\n \"destination_exchange_shard\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://external-api.kalshi.com/trade-api/v2/portfolio/intra_exchange_instance_transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["KALSHI-ACCESS-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 123,\n \"client_transfer_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"source_exchange_shard\": 0,\n \"destination_exchange_shard\": 0\n}"
response = http.request(request)
puts response.read_body{
"transfer_id": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": "<string>"
}Authorizations
kalshiAccessKeykalshiAccessSignaturekalshiAccessTimestamp
Your API key ID
Body
application/json
The source exchange instance
Available options:
event_contract, margined The destination exchange instance
Available options:
event_contract, margined The amount to transfer in centicents
Client ID for duplicate prevention. Reuse only for identical requests. Scoped to the user and both exchange instances and shards. Accepted transfers cannot be repeated with the same ID on the same route. Only supported for primary accounts. Transfers involving numbered subaccounts reject this field. If omitted, each request creates a new transfer.
Source exchange shard index (default 0)
Required range:
0 <= x <= 100Destination exchange shard index (default 0)
Required range:
0 <= x <= 100Response
Transfer request accepted. The transfer is processed asynchronously.
The ID of the transfer that was created