Ender Docs

SDKs & Libraries

Code examples and patterns for integrating Ender API into your applications.

Overview

While you can use Ender API directly with HTTP requests, we provide code examples in multiple languages to get you started quickly.

Official SDKs are in development. For now, use the examples below.


Quick Start Examples

Node.js

class EnderClient {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseUrl = "https://api.ender.black/v1";
  }
 
  async request(endpoint, options = {}) {
    const response = await fetch(`${this.baseUrl}${endpoint}`, {
      ...options,
      headers: {
        Authorization: this.apiKey,
        "Content-Type": "application/json",
        ...options.headers,
      },
    });
    return response.json();
  }
 
  // Checkers
  async authCheck(gate, cc, proxy) {
    return this.request("/checkers/auth", {
      method: "POST",
      body: JSON.stringify({ gate, cc, proxy }),
    });
  }
 
  async chargeCheck(gateId, cc, amount, proxy) {
    return this.request("/checkers/charge", {
      method: "POST",
      body: JSON.stringify({ gateId, cc, amount, proxy }),
    });
  }
 
  async shopifyCheck(gateId, cc, proxy) {
    return this.request("/checkers/shopify", {
      method: "POST",
      body: JSON.stringify({ gateId, cc, proxy }),
    });
  }
 
  // Solvers
  async solveRecaptchaV2(sitekey, url) {
    return this.request("/solvers/recaptcha_v2", {
      method: "POST",
      body: JSON.stringify({ sitekey, url }),
    });
  }
 
  async solveRecaptchaV3(sitekey, url, action) {
    return this.request("/solvers/recaptcha_v3", {
      method: "POST",
      body: JSON.stringify({ sitekey, url, action }),
    });
  }
 
  async solveTurnstile(sitekey, url) {
    return this.request("/solvers/cloudflare_turnstile", {
      method: "POST",
      body: JSON.stringify({ sitekey, url }),
    });
  }
 
  // User
  async getMe() {
    return this.request("/me", { method: "POST" });
  }
}
 
// Usage
const client = new EnderClient("YOUR_API_KEY");
 
// Check a card
const result = await client.authCheck("stripe", "4111...|12|25|123");
console.log(result);
 
// Solve a captcha
const captcha = await client.solveRecaptchaV2("6Le...", "https://example.com");
console.log(captcha.data.token);

Python

import requests
from typing import Optional, Dict, Any
 
class EnderClient:
    def __init__(self, api_key: str):
        self.api_key = api_key
        self.base_url = 'https://api.ender.black/v1'
 
    def _request(self, endpoint: str, method: str = 'GET',
                 json: Optional[Dict] = None) -> Dict[str, Any]:
        headers = {
            'Authorization': self.api_key,
            'Content-Type': 'application/json'
        }
        response = requests.request(
            method,
            f'{self.base_url}{endpoint}',
            headers=headers,
            json=json
        )
        return response.json()
 
    # Checkers
    def auth_check(self, gate: str, cc: str, proxy: Optional[str] = None):
        return self._request('/checkers/auth', 'POST', {
            'gate': gate,
            'cc': cc,
            'proxy': proxy
        })
 
    def charge_check(self, gate_id: str, cc: str,
                     amount: float = None, proxy: Optional[str] = None):
        return self._request('/checkers/charge', 'POST', {
            'gateId': gate_id,
            'cc': cc,
            'amount': amount,
            'proxy': proxy
        })
 
    def shopify_check(self, gate_id: str, cc: str, proxy: Optional[str] = None):
        return self._request('/checkers/shopify', 'POST', {
            'gateId': gate_id,
            'cc': cc,
            'proxy': proxy
        })
 
    # Solvers
    def solve_recaptcha_v2(self, sitekey: str, url: str):
        return self._request('/solvers/recaptcha_v2', 'POST', {
            'sitekey': sitekey,
            'url': url
        })
 
    def solve_recaptcha_v3(self, sitekey: str, url: str, action: str = None):
        return self._request('/solvers/recaptcha_v3', 'POST', {
            'sitekey': sitekey,
            'url': url,
            'action': action
        })
 
    def solve_turnstile(self, sitekey: str, url: str):
        return self._request('/solvers/cloudflare_turnstile', 'POST', {
            'sitekey': sitekey,
            'url': url
        })
 
    # User
    def get_me(self):
        return self._request('/me', 'POST')
 
 
# Usage
client = EnderClient('YOUR_API_KEY')
 
# Check a card
result = client.auth_check('stripe', '4111...|12|25|123')
print(result)
 
# Solve a captcha
captcha = client.solve_recaptcha_v2('6Le...', 'https://example.com')
print(captcha['data']['token'])

Error Handling

Both examples can be extended with proper error handling:

Node.js with Error Handling

async function safeRequest(client, method, ...args) {
  try {
    const result = await client[method](...args);
    
    if (!result.success) {
      console.error(`API Error: ${result.data.error}`);
      return null;
    }
    
    return result.data;
  } catch (error) {
    console.error(`Network Error: ${error.message}`);
    return null;
  }
}
 
// Usage
const data = await safeRequest(client, 'authCheck', 'stripe', '4111...|12|25|123');
if (data) {
  console.log('Card result:', data);
}

Community SDKs

If you've built an SDK for Ender, contact us to have it listed here.


API Reference

For complete API documentation, see:

On this page