api.botsubscription.com
GET /v1/endpoint
Authentication Bearer
Token
Stays in this tab. Required for this endpoint — the value below is what gets sent.
Request GET Response —
cURL Node Python PHP Go Ruby
Copy curl --request GET \
--url https://api.botsubscription.com/v1/endpoint \
--header 'Authorization: Bearer sk_live_•••'— — · — · —
Response will appear here.
Read setup status and instructions for payment-provider notifications to your Telegram subscription bot or Discord subscription bot . Custom integrations use the separate outbound webhook API .
POST /v2/projects/ {project_id} /merchant-accounts/ {merchant_account_id} /verify-webhook CopyTry it Authorization Bearer API Key Required
API key access: Unrestricted project API key required. Restricted keys cannot call this endpoint.
Path Parameters The merchant account UUID.
Send an empty body or {}. This reads stored or derived status; it does not contact the provider or send a test delivery.
Project API keys cannot override verification and never receive stored webhook signing secrets. Configure provider credentials and verification through your project dashboard. Use Get Merchant Account to refresh account details.
This endpoint uses the common optional idempotency header , with a nonreplayable success response. If a completed keyed request returns 409 IDEMPOTENCY_RESPONSE_NOT_REPLAYABLE, reconcile account state before issuing a new logical request.
curl -X POST "https://api.botsubscription.com/v2/projects/YOUR_PROJECT_ID/merchant-accounts/YOUR_ACCOUNT_ID/verify-webhook" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' const response = await fetch ( "https://api.botsubscription.com/v2/projects/YOUR_PROJECT_ID/merchant-accounts/YOUR_ACCOUNT_ID/verify-webhook" , {
method: "POST" ,
headers: { "Authorization" : "Bearer YOUR_API_KEY" }
});
const result = await response. json (); import requests
response = requests.post(
"https://api.botsubscription.com/v2/projects/YOUR_PROJECT_ID/merchant-accounts/YOUR_ACCOUNT_ID/verify-webhook" ,
headers = { "Authorization" : "Bearer YOUR_API_KEY" }
)
result = response.json() $ch = curl_init ( "https://api.botsubscription.com/v2/projects/YOUR_PROJECT_ID/merchant-accounts/YOUR_ACCOUNT_ID/verify-webhook" );
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST , 'POST' );
curl_setopt ($ch, CURLOPT_HTTPHEADER , [ 'Authorization: Bearer YOUR_API_KEY' ]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER , true );
$response = curl_exec ($ch); Provider needs no manual webhook setup application/json
{
"ok" : true ,
"request_id" : "44444444-4444-4444-8444-444444444444" ,
"method" : "POST" ,
"path" : "/v2/projects/11111111-1111-4111-8111-111111111111/merchant-accounts/11111111-1111-4111-8111-111111111111/verify-webhook" ,
"code" : 200 ,
"message" : "Success" ,
"data" : {
"merchant_account_id" : "11111111-1111-4111-8111-111111111111" ,
"webhook_verification" : {
"required" : false ,
"mode" : "none" ,
"status" : "not_required" ,
"verification_method" : null ,
"verification_supported" : false ,
"can_mark_verified" : false ,
"action_required" : false
}
}
} Manual provider setup is still pending application/json
{
"ok" : true ,
"request_id" : "44444444-4444-4444-8444-444444444444" ,
"method" : "POST" ,
"path" : "/v2/projects/11111111-1111-4111-8111-111111111111/merchant-accounts/11111111-1111-4111-8111-111111111111/verify-webhook" ,
"code" : 200 ,
"message" : "Success" ,
"data" : {
"merchant_account_id" : "11111111-1111-4111-8111-111111111111" ,
"webhook_verification" : {
"required" : true ,
"mode" : "manual" ,
"status" : "pending" ,
"verification_method" : "webhook_arrival" ,
"verification_supported" : true ,
"can_mark_verified" : false ,
"action_required" : true
},
"webhook_setup" : {
"required" : true ,
"mode" : "manual" ,
"status" : "pending" ,
"webhook_url" : "https://api.example.com/webhooks/provider/example-account" ,
"dashboard_url" : "https://provider.example.com/settings/webhooks" ,
"instructions" : [
{
"step" : 1 ,
"text" : "Configure the webhook URL in your payment provider dashboard."
}
],
"missing_credentials" : [
"creem_webhook_secret"
]
}
}
} Invalid merchant account ID application/json
{
"ok" : false ,
"request_id" : "44444444-4444-4444-8444-444444444444" ,
"method" : "POST" ,
"path" : "/v2/projects/11111111-1111-4111-8111-111111111111/merchant-accounts/not-a-uuid/verify-webhook" ,
"code" : 422 ,
"errors" : [
{
"message" : "params: merchant_account_id Invalid UUID" ,
"error_code" : "VALIDATION_ERROR"
}
]
} Merchant account not found application/json
{
"ok" : false ,
"request_id" : "44444444-4444-4444-8444-444444444444" ,
"method" : "POST" ,
"path" : "/v2/projects/11111111-1111-4111-8111-111111111111/merchant-accounts/22222222-2222-4222-8222-222222222222/verify-webhook" ,
"code" : 404 ,
"error" : {
"error_code" : "NOT_FOUND" ,
"message" : "Merchant account not found"
}
} Invalid or expired API key application/json
{
"ok" : false ,
"request_id" : "44444444-4444-4444-8444-444444444444" ,
"method" : "POST" ,
"path" : "/v2/projects/11111111-1111-4111-8111-111111111111/merchant-accounts/22222222-2222-4222-8222-222222222222/verify-webhook" ,
"code" : 401 ,
"error" : {
"message" : "Invalid or expired authentication token." ,
"error_code" : "UNAUTHORIZED"
}
} Last updated: November 4, 2026
PreviousEnable/Disable Provider Next Remove Provider