curl --request POST \
--url https://purps.lol/api/v2/pons/launches/submit \
--header 'Content-Type: application/json' \
--data '
{
"image": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"ts": 123,
"signature": "<string>"
}
'import requests
url = "https://purps.lol/api/v2/pons/launches/submit"
payload = {
"image": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"ts": 123,
"signature": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
image: '<string>',
imageUrl: '<string>',
description: '<string>',
twitter: '<string>',
telegram: '<string>',
ts: 123,
signature: '<string>'
})
};
fetch('https://purps.lol/api/v2/pons/launches/submit', 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://purps.lol/api/v2/pons/launches/submit",
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([
'image' => '<string>',
'imageUrl' => '<string>',
'description' => '<string>',
'twitter' => '<string>',
'telegram' => '<string>',
'ts' => 123,
'signature' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://purps.lol/api/v2/pons/launches/submit"
payload := strings.NewReader("{\n \"image\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"ts\": 123,\n \"signature\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://purps.lol/api/v2/pons/launches/submit")
.header("Content-Type", "application/json")
.body("{\n \"image\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"ts\": 123,\n \"signature\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://purps.lol/api/v2/pons/launches/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"image\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"ts\": 123,\n \"signature\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"steps": [
{}
],
"walletKey": "<string>",
"feeRecipient": "<string>",
"requiredWei": "<string>",
"balanceWei": "<string>",
"shortByWei": "<string>",
"imageUrl": "<string>",
"launchFee": "<string>",
"pair": {},
"fees": {}
}
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}Build the Pons launch
Step 2. Returns the EVM transactions to send from the creator wallet, in order: an optional swap and approval when there is a dev buy in a token pair, then the launch itself. You send these yourself (there is no relay on Robinhood Chain). Then call /pons/launches/ with the launch transaction hash and register the strategy.
curl --request POST \
--url https://purps.lol/api/v2/pons/launches/submit \
--header 'Content-Type: application/json' \
--data '
{
"image": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"ts": 123,
"signature": "<string>"
}
'import requests
url = "https://purps.lol/api/v2/pons/launches/submit"
payload = {
"image": "<string>",
"imageUrl": "<string>",
"description": "<string>",
"twitter": "<string>",
"telegram": "<string>",
"ts": 123,
"signature": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
image: '<string>',
imageUrl: '<string>',
description: '<string>',
twitter: '<string>',
telegram: '<string>',
ts: 123,
signature: '<string>'
})
};
fetch('https://purps.lol/api/v2/pons/launches/submit', 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://purps.lol/api/v2/pons/launches/submit",
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([
'image' => '<string>',
'imageUrl' => '<string>',
'description' => '<string>',
'twitter' => '<string>',
'telegram' => '<string>',
'ts' => 123,
'signature' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://purps.lol/api/v2/pons/launches/submit"
payload := strings.NewReader("{\n \"image\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"ts\": 123,\n \"signature\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://purps.lol/api/v2/pons/launches/submit")
.header("Content-Type", "application/json")
.body("{\n \"image\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"ts\": 123,\n \"signature\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://purps.lol/api/v2/pons/launches/submit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"image\": \"<string>\",\n \"imageUrl\": \"<string>\",\n \"description\": \"<string>\",\n \"twitter\": \"<string>\",\n \"telegram\": \"<string>\",\n \"ts\": 123,\n \"signature\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"steps": [
{}
],
"walletKey": "<string>",
"feeRecipient": "<string>",
"requiredWei": "<string>",
"balanceWei": "<string>",
"shortByWei": "<string>",
"imageUrl": "<string>",
"launchFee": "<string>",
"pair": {},
"fees": {}
}
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}{
"ok": true,
"error": "<string>"
}Body
Everything in PonsTerms, plus:
The coin's logo as a data URL (data:image/png;base64,…). PNG, JPEG, WebP or GIF, 512KB max. Send this or imageUrl.
A public https link to the logo instead of image. Fetched by us under the same size and type rules.
Up to 500 characters. The coin's website in its metadata is always its purps.lol page; add your own links as twitter and telegram.
https:// link.
https:// link.
The ts the prepare step returned.
Your wallet's signature over the prepared message. Base58 on Solana, 0x-hex on Robinhood Chain.