API v2.0 para Desarrolladores

Integra nuestros servicios SMM en tus aplicaciones con nuestra API REST. Compra seguidores, likes, vistas y más de forma programática.

Información General

Base URL

https://bullsmm.social/api/v2

Formato de Respuesta

Todas las respuestas son en formato JSON.

Rate Limiting

Máximo 60 solicitudes por minuto por API Key + IP. Si excedes este límite recibirás un código 429 Too Many Requests.

Métodos HTTP

Usamos GET para consultas y POST para acciones (crear órdenes, refill, etc.).

1

Autenticación

Todas las solicitudes deben incluir tu API Key. Puedes generar tus keys desde tu perfil en el panel de control.

Header HTTP (Recomendado)

X-API-Key: tu_api_key_aqui

Parámetro GET/POST (Alternativo)

https://bullsmm.social/api/v2/balance?api_key=tu_api_key_aqui

Importante

Mantén tu API Key segura. No la compartas en repositorios públicos o código del lado del cliente. Si crees que tu key fue comprometida, regenérala desde tu perfil.

2

Consultar Balance

Obtén el saldo disponible de tu cuenta.

GET /api/v2/balance

Respuesta exitosa:

{
    "status": "success",
    "balance": 150.75,
    "currency": "USD"
}
3

Listar Servicios

Obtén la lista completa de servicios disponibles con sus precios y detalles.

GET /api/v2/services

Respuesta exitosa:

{
    "status": "success",
    "services": [
        {
            "service": 123,
            "name": "Instagram Seguidores - Alta Calidad",
            "category": "Instagram",
            "rate": 0.50,
            "min": 10,
            "max": 50000,
            "is_active": true
        }
    ]
}

Parámetros de cada servicio:

Campo Tipo Descripción
serviceintegerID del servicio
namestringNombre del servicio
categorystringCategoría (Instagram, TikTok, etc.)
ratefloatPrecio por unidad (1000)
minintegerCantidad mínima por orden
maxintegerCantidad máxima por orden
is_activebooleanSi el servicio está disponible
4

Crear Orden

Crea una nueva orden para un servicio específico.

POST /api/v2/order

Parámetros:

Parámetro Tipo Requerido Descripción
serviceintegerID del servicio
linkstringURL del perfil/publicación
quantityintegerCantidad (entre min y max del servicio)
custom_datastringNoDatos adicionales (ej: username para comentarios)

Ejemplo de solicitud:

POST /api/v2/order
Content-Type: application/json
X-API-Key: tu_api_key

{
    "service": 123,
    "link": "https://www.instagram.com/usuario",
    "quantity": 1000
}

Respuesta exitosa:

{
    "status": "success",
    "order": {
        "id": 12345,
        "service": 123,
        "link": "https://www.instagram.com/usuario",
        "quantity": 1000,
        "charge": 0.50,
        "status": "pending",
        "created_at": "2026-04-30T12:00:00Z"
    }
}
5

Órdenes Múltiples

Crea múltiples órdenes en una sola solicitud. Máximo 100 órdenes por lote.

POST /api/v2/orders

Ejemplo de solicitud:

POST /api/v2/orders
Content-Type: application/json
X-API-Key: tu_api_key

{
    "orders": [
        {
            "service": 123,
            "link": "https://instagram.com/usuario1",
            "quantity": 500
        },
        {
            "service": 456,
            "link": "https://tiktok.com/@usuario2",
            "quantity": 1000
        }
    ]
}

Respuesta exitosa:

{
    "status": "success",
    "orders": [
        { "id": 12345, "service": 123, "charge": 0.25, "status": "pending" },
        { "id": 12346, "service": 456, "charge": 0.50, "status": "pending" }
    ]
}
6

Estado de Orden

Consulta el estado actual de una orden específica.

GET /api/v2/status?order_id=12345

Parámetros:

Parámetro Tipo Requerido Descripción
order_idintegerID de la orden

Respuesta exitosa:

{
    "status": "success",
    "order": {
        "id": 12345,
        "service": 123,
        "link": "https://www.instagram.com/usuario",
        "quantity": 1000,
        "start_count": 0,
        "remains": 1000,
        "charge": 0.50,
        "status": "In progress",
        "created_at": "2026-04-30T12:00:00Z"
    }
}

Posibles estados de una orden:

Pending In progress Completed Cancelled Partial Refill requested
7

Refill (Reposición)

Solicita una reposición para una orden que no haya entregado la cantidad completa.

POST /api/v2/refill

Parámetros:

Parámetro Tipo Requerido Descripción
order_idintegerID de la orden a reponer

Ejemplo de solicitud:

POST /api/v2/refill
Content-Type: application/json
X-API-Key: tu_api_key

{
    "order_id": 12345
}

Respuesta exitosa:

{
    "status": "success",
    "message": "Refill solicitado correctamente para la orden #12345"
}
8

Historial de Órdenes

Obtén un listado de tus últimas órdenes con paginación.

GET /api/v2/orders

Parámetros opcionales:

Parámetro Tipo Requerido Descripción
pageintegerNoNúmero de página (default: 1)
per_pageintegerNoResultados por página (default: 20, max: 100)

Respuesta exitosa:

{
    "status": "success",
    "orders": [
        {
            "id": 12345,
            "service": 123,
            "link": "https://instagram.com/usuario",
            "quantity": 1000,
            "charge": 0.50,
            "status": "Completed",
            "created_at": "2026-04-30T12:00:00Z"
        }
    ],
    "pagination": {
        "current_page": 1,
        "last_page": 5,
        "per_page": 20,
        "total": 85
    }
}
*

Ejemplos por Lenguaje

Ejemplos prácticos para integrar nuestra API en diferentes lenguajes de programación.

PHP cURL + JSON
<?php

// Configuración
$apiKey = 'tu_api_key';
$url = 'https://bullsmm.social/api/v2/order';

// Datos de la orden
$data = [
    'service' => 123,
    'link' => 'https://www.instagram.com/usuario',
    'quantity' => 1000
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    "X-API-Key: $apiKey"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response);
print_r($result);
Python requests
import requests
import json

# Configuración
API_KEY = 'tu_api_key'
URL = 'https://bullsmm.social/api/v2/order'

# Datos de la orden
data = {
    'service': 123,
    'link': 'https://www.instagram.com/usuario',
    'quantity': 1000
}

# Headers
headers = {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
}

# Solicitud
response = requests.post(URL, json=data, headers=headers)
result = response.json()

print(json.dumps(result, indent=2))
Node.js axios
const axios = require('axios');

// Configuración
const API_KEY = 'tu_api_key';
const URL = 'https://bullsmm.social/api/v2/order';

// Datos de la orden
const data = {
    service: 123,
    link: 'https://www.instagram.com/usuario',
    quantity: 1000
};

// Solicitud
axios.post(URL, data, {
    headers: {
        'Content-Type': 'application/json',
        'X-API-Key': API_KEY
    }
})
.then(response => {
    console.log(response.data);
})
.catch(error => {
    console.error(error.response?.data || error.message);
});
cURL Terminal
curl -X POST https://bullsmm.social/api/v2/order \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tu_api_key" \
  -d '{"service":123,"link":"https://www.instagram.com/usuario","quantity":1000}'
Java OkHttp
import okhttp3.*;
import org.json.JSONObject;

public class BullsmmApi {
    public static void main(String[] args) throws Exception {
        String apiKey = "tu_api_key";

        JSONObject json = new JSONObject();
        json.put("service", 123);
        json.put("link", "https://www.instagram.com/usuario");
        json.put("quantity", 1000);

        OkHttpClient client = new OkHttpClient();
        RequestBody body = RequestBody.create(
            json.toString(),
            MediaType.parse("application/json")
        );

        Request request = new Request.Builder()
            .url("https://bullsmm.social/api/v2/order")
            .post(body)
            .addHeader("X-API-Key", apiKey)
            .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}
C# HttpClient
using System;
using System.Net.Http;
using System.Text;
using Newtonsoft.Json;

class Program {
    static async System.Threading.Tasks.Task Main() {
        var apiKey = "tu_api_key";
        var url = "https://bullsmm.social/api/v2/order";

        var data = new {
            service = 123,
            link = "https://www.instagram.com/usuario",
            quantity = 1000
        };

        var json = JsonConvert.SerializeObject(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        content.Headers.Add("X-API-Key", apiKey);

        using var client = new HttpClient();
        var response = await client.PostAsync(url, content);
        Console.WriteLine(await response.Content.ReadAsStringAsync());
    }
}
Ruby Net::HTTP
require 'net/http'
require 'uri'
require 'json'

# Configuración
api_key = 'tu_api_key'
url = URI('https://bullsmm.social/api/v2/order')

# Datos
data = {
    service: 123,
    link: 'https://www.instagram.com/usuario',
    quantity: 1000
}

# Solicitud
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request['Content-Type'] = 'application/json'
request['X-API-Key'] = api_key
request.body = data.to_json

response = http.request(request)
puts JSON.pretty_generate(JSON.parse(response.body))
!

Códigos de Error

La API utiliza códigos HTTP estándar para indicar el resultado de las solicitudes.

Código Significado Descripción
200 OK Solicitud exitosa
400 Bad Request Parámetros inválidos o faltantes. Revisa el mensaje de error.
401 Unauthorized API Key inválida o no proporcionada.
403 Forbidden Cuenta bloqueada o sin permisos.
429 Too Many Requests Límite de 60 solicitudes/minuto excedido. Espera antes de reintentar.
500 Server Error Error interno del servidor. Contacta a soporte si persiste.

Formato de respuesta de error:

{
    "error": true,
    "message": "Descripción del error.",
    "code": "ERROR_CODE"
}

Límites y Buenas Prácticas

Para garantizar la estabilidad y rendimiento de la API, sigue estas recomendaciones:

Rate Limiting

Máximo 60 solicitudes por minuto por API Key + IP. Si excedes este límite recibirás un error 429 Too Many Requests.

Las cabeceras de rate limit se incluyen en cada respuesta:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1682899200

Seguridad

  • Nunca compartas tu API Key. Cada key es personal e intransferible.
  • Usa HTTPS en todas tus solicitudes. La API no acepta conexiones HTTP.
  • Si sospechas que tu key fue comprometida, regenerala inmediatamente desde tu perfil.
  • Valida siempre los parámetros antes de enviarlos. La API rechazará datos inválidos.

Rendimiento

  • Usa el endpoint /orders (batch) para múltiples órdenes en una sola solicitud.
  • Cachea la lista de servicios localmente. Los servicios no cambian con frecuencia.
  • Implementa reintentos con backoff exponencial para errores 429 y 5xx.
  • Máximo 100 órdenes por solicitud batch.

Errores Comunes

  • 401 API Key faltante, inválida o expirada.
  • 403 Usuario bloqueado o sin permisos suficientes.
  • 422 Datos inválidos: service no existe, quantity fuera de rango, link mal formado.
  • 402 Saldo insuficiente para completar la orden.

¿Necesitas ayuda?

Si tienes dudas sobre la integración o encuentras algún problema, abre un ticket de soporte desde tu panel de control o contáctanos a través de soporte@bullsmm.social. ¡Estamos aquí para ayudarte!