Request On Demand Payout
curl --request POST \
--url https://api.{your-broker}.slate-labs.com/challenges/me/payouts/requestimport requests
url = "https://api.{your-broker}.slate-labs.com/challenges/me/payouts/request"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.{your-broker}.slate-labs.com/challenges/me/payouts/request', 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.{your-broker}.slate-labs.com/challenges/me/payouts/request",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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.{your-broker}.slate-labs.com/challenges/me/payouts/request"
req, _ := http.NewRequest("POST", url, nil)
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.{your-broker}.slate-labs.com/challenges/me/payouts/request")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{your-broker}.slate-labs.com/challenges/me/payouts/request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{}Prop trading
Request On Demand Payout
PAY-6 (B-004): customer-initiated on-demand payout request.
For a funded journey whose payout cadence is on_demand, the scheduled
generator never auto-opens a cycle (it continues on_demand), so without
this endpoint a funded on_demand trader could NEVER withdraw. This opens a
cycle covering [last-cycle-end-or-funded-anchor, now], closes it on demand
through the SAME _close_cycle_and_create_request path the scheduled
generator uses (identical cycle math, eval, equity/min-days/consistency
guards, KYC stamp, fee-refund, auto-reject) — no duplicated logic — and
returns the resulting payout_request.
Guards:
- journey must be active + on the funded phase + account active;
- cadence must be
on_demand(a scheduled-cadence journey 409s — it is served by the generator); - at most one in-flight payout per account (the partial-unique index plus an explicit pre-check) — a duplicate concurrent request 409s;
- the same min-amount / equity-floating / KYC checks the scheduled path applies (inside _close_cycle_and_create_request) decide payable vs auto-rejected.
POST
/
challenges
/
me
/
payouts
/
request
Request On Demand Payout
curl --request POST \
--url https://api.{your-broker}.slate-labs.com/challenges/me/payouts/requestimport requests
url = "https://api.{your-broker}.slate-labs.com/challenges/me/payouts/request"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.{your-broker}.slate-labs.com/challenges/me/payouts/request', 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.{your-broker}.slate-labs.com/challenges/me/payouts/request",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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.{your-broker}.slate-labs.com/challenges/me/payouts/request"
req, _ := http.NewRequest("POST", url, nil)
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.{your-broker}.slate-labs.com/challenges/me/payouts/request")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{your-broker}.slate-labs.com/challenges/me/payouts/request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{}Response
201 - application/json
Successful Response
The response is of type Response Request On Demand Payout Challenges Me Payouts Request Post · object.