Application Management
Use your application server key to read application settings, check wallet balance, and create a wallet top-up payment URL from your backend.
These endpoints are backend-to-backend (same auth style as Verification REST endpoints).
Overview
| Base URL | https://api.verifyspeed.com |
| Auth | server-key header (application server key from the dashboard) |
| Content-Type | application/json |
| JSON | camelCase; enums as strings |
| Rate limiting | Same server-key rate limit policy as verification endpoints |
Copy your server key from the VerifySpeed dashboard under application settings / keys. Never expose the server key in mobile or browser clients.
Get Application Info
Returns public application details for the application identified by your server key.
Endpoint: GET https://api.verifyspeed.com/v1/applications/info
Request Headers
server-key(required): Server key obtained from the dashboard. Missing or invalid key → unauthorized.
- cURL
- C#
- Go
- Node.js
- PHP
- Python
curl -X GET "https://api.verifyspeed.com/v1/applications/info" \
-H "server-key: YOUR_SERVER_KEY"
using System.Net.Http;
using System.Threading.Tasks;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("server-key", "YOUR_SERVER_KEY");
var response = await client.GetAsync("https://api.verifyspeed.com/v1/applications/info");
var content = await response.Content.ReadAsStringAsync();
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://api.verifyspeed.com/v1/applications/info", nil)
if err != nil {
panic(err)
}
req.Header.Set("server-key", "YOUR_SERVER_KEY")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}
const axios = require('axios');
const response = await axios.get('https://api.verifyspeed.com/v1/applications/info', {
headers: {
'server-key': 'YOUR_SERVER_KEY'
}
});
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.verifyspeed.com/v1/applications/info");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"server-key: YOUR_SERVER_KEY"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
?>
import requests
headers = {
'server-key': 'YOUR_SERVER_KEY'
}
response = requests.get('https://api.verifyspeed.com/v1/applications/info', headers=headers)
Response (200 OK)
{
"sid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "My App",
"otpDigitLength": 5,
"methods": ["SmsOtp", "WhatsAppOtp", "TelegramMessage"]
}
Response Fields
| Field | Type | Description |
|---|---|---|
sid | uuid (string) | Application public id |
name | string | Application name |
otpDigitLength | number | OTP digit length (typically 5 or 6) |
methods | string[] | Configured verification methods for this application |
Possible methods values
TelegramMessageWhatsAppMessageSmsOtpWhatsAppOtpTelegramOtp
See Verification Methods for an overview of each method.
Errors
- Invalid or missing server key → unauthorized (application not found / invalid server-key)
Get Wallet Balance
Returns the current wallet balance for the application identified by your server key.
Endpoint: GET https://api.verifyspeed.com/v1/applications/wallet/balance
Request Headers
server-key(required): Server key obtained from the dashboard. Missing or invalid key → unauthorized.
- cURL
- C#
- Go
- Node.js
- PHP
- Python
curl -X GET "https://api.verifyspeed.com/v1/applications/wallet/balance" \
-H "server-key: YOUR_SERVER_KEY"
using System.Net.Http;
using System.Threading.Tasks;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("server-key", "YOUR_SERVER_KEY");
var response = await client.GetAsync("https://api.verifyspeed.com/v1/applications/wallet/balance");
var content = await response.Content.ReadAsStringAsync();
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://api.verifyspeed.com/v1/applications/wallet/balance", nil)
if err != nil {
panic(err)
}
req.Header.Set("server-key", "YOUR_SERVER_KEY")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}
const axios = require('axios');
const response = await axios.get('https://api.verifyspeed.com/v1/applications/wallet/balance', {
headers: {
'server-key': 'YOUR_SERVER_KEY'
}
});
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.verifyspeed.com/v1/applications/wallet/balance");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"server-key: YOUR_SERVER_KEY"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
?>
import requests
headers = {
'server-key': 'YOUR_SERVER_KEY'
}
response = requests.get('https://api.verifyspeed.com/v1/applications/wallet/balance', headers=headers)
Response (200 OK)
{
"amount": 12.50000
}
Response Fields
| Field | Type | Description |
|---|---|---|
amount | number (decimal) | Current application wallet balance (USD) |
Errors
- Invalid or missing server key → unauthorized
Top Up Wallet
Creates a pending fund and returns a payment URL from the active online payment provider. After the user completes payment, the wallet balance increases automatically (same payment flow as a dashboard top-up; this is a backend entry point).
Endpoint: POST https://api.verifyspeed.com/v1/applications/wallet/top-up
Request Headers
server-key(required): Server key obtained from the dashboard. Missing or invalid key → unauthorized.Content-Type:application/json
Request Body
{
"amount": 25
}
| Field | Type | Required | Validation | Description |
|---|---|---|---|---|
amount | number (decimal) | yes | min 1, max 100000 | Top-up amount in USD |
Also enforced server-side (from platform settings):
- Must be ≥ configured online payment minimum
- Must be ≤ configured online payment maximum (when max is enabled)
- Online payments must be enabled
- Application must not be disabled
- cURL
- C#
- Go
- Node.js
- PHP
- Python
curl -X POST "https://api.verifyspeed.com/v1/applications/wallet/top-up" \
-H "server-key: YOUR_SERVER_KEY" \
-H "Content-Type: application/json" \
-d "{\"amount\": 25}"
using System.Net.Http;
using System.Text;
using System.Text.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("server-key", "YOUR_SERVER_KEY");
var requestBody = new { amount = 25 };
var json = JsonSerializer.Serialize(requestBody);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.verifyspeed.com/v1/applications/wallet/top-up", content);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
requestBody := map[string]interface{}{
"amount": 25,
}
jsonData, err := json.Marshal(requestBody)
if err != nil {
panic(err)
}
req, err := http.NewRequest("POST", "https://api.verifyspeed.com/v1/applications/wallet/top-up", bytes.NewBuffer(jsonData))
if err != nil {
panic(err)
}
req.Header.Set("server-key", "YOUR_SERVER_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}
const axios = require('axios');
const response = await axios.post('https://api.verifyspeed.com/v1/applications/wallet/top-up', {
amount: 25
}, {
headers: {
'server-key': 'YOUR_SERVER_KEY',
'Content-Type': 'application/json'
}
});
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.verifyspeed.com/v1/applications/wallet/top-up");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"server-key: YOUR_SERVER_KEY",
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'amount' => 25
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
?>
import requests
headers = {
'server-key': 'YOUR_SERVER_KEY'
}
data = {
'amount': 25
}
response = requests.post(
'https://api.verifyspeed.com/v1/applications/wallet/top-up',
headers=headers,
json=data
)
Response (200 OK)
{
"paymentUrl": "https://payment-provider.example/checkout/...",
"fundId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
Response Fields
| Field | Type | Description |
|---|---|---|
paymentUrl | string | URL to send the user / open to complete payment |
fundId | uuid (string) | Fund/top-up id for tracking this payment |
Behavior
- Creates a pending fund and returns a payment URL from the active online payment provider.
- This does not credit the wallet immediately; the customer must complete payment at
paymentUrl. - After payment succeeds via webhook, wallet balance increases automatically.
- Applicable fund bonuses (if any) are applied when payment completes (same as dashboard top-up).
Errors
- Invalid or missing server key → unauthorized
- Online payment disabled → validation error:
Online payment is disabled - Application disabled → validation error:
Application is disabled - Amount below minimum → validation error like
Cannot fund with amount less than $X - Amount above maximum → validation error like
Cannot fund with amount greater than $X - Body validation:
amountoutside1..100000
Related
- REST API Endpoints — verification initialize / create / validate-otp / result (same
server-keyauth) - Verification Methods
- Wallet top-up in the VerifySpeed dashboard — same payment flow, different entry point