Integre facilmente com nossa plataforma de números virtuais através de nossa API robusta e documentada.
Todas as requisições à API devem incluir sua chave de API como parâmetro GET ou POST. Sua chave de API identifica você para o sistema e deve ser mantida em segredo.
Inclua sua chave de API como parâmetro na URL ou no corpo da requisição:
GET https://virtualsms.org/api-c/endpoint?api_key=SUA_CHAVE_APIou
POST https://virtualsms.org/api-c/endpoint
Content-Type: application/x-www-form-urlencoded
api_key=SUA_CHAVE_API&outro_parametro=valorEste endpoint permite solicitar um número virtual para uso com um serviço específico.
POST https://virtualsms.org/api-c/compra.php?api_key=SUA_CHAVE_API| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| api_key | string | Sim | Sua chave de API (pode ser enviada via GET ou POST) | 
| service_id | string | Sim | ID do serviço para o qual deseja solicitar o número | 
{
    "message": "Número reservado com sucesso.",
    "color": "green",
    "numero": "5511999999999",
    "porta_com": "12345",
    "id_numero": 11433,
    "iccid": "8931080112345678901",
    "operadora": "Vivo"
}<?php
$apiKey = 'SUA_API_KEY';
$serviceId = 'ID_DO_SERVIÇO';
$url = "https://virtualsms.org/api-c/compra.php?api_key=$apiKey";
$data = ['service_id' => $serviceId];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
    echo "Erro na requisição: " . curl_error($ch);
} else {
    if ($httpCode === 200) {
        $responseData = json_decode($response, true);
        if (json_last_error() === JSON_ERROR_NONE) {
            print_r($responseData);
        } else {
            echo "Erro ao decodificar JSON: " . json_last_error_msg();
        }
    } else {
        echo "Erro HTTP: $httpCode\nResposta: $response";
    }
}
curl_close($ch);
?>import requests
data = {
    'service_id': 'ID_DO_SERVIÇO'  # Parâmetro POST
}
api_key = 'SUA_API_KEY'  # Parâmetro GET
url = f'https://virtualsms.org/api-c/compra.php?api_key={api_key}'
response = requests.post(url, data=data)
try:
    print(response.json())  # Para exibir o JSON recebido
except Exception as e:
    print(f"Erro ao processar resposta: {e}")
    print(response.text)  # Exibir o conteúdo da respostaconst axios = require('axios');
const apiKey = 'SUA_API_KEY';
const serviceId = 'ID_DO_SERVICO';
const url = `https://virtualsms.org/api-c/compra.php?api_key=${apiKey}`;
axios.post(url, {
    service_id: serviceId
}, {
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
})
.then(response => {
    console.log(response.data);
})
.catch(error => {
    if (error.response) {
        console.error('Erro na resposta:', error.response.status, error.response.data);
    } else if (error.request) {
        console.error('Erro na requisição:', error.request);
    } else {
        console.error('Erro desconhecido:', error.message);
    }
});Use este endpoint para cancelar um número que foi solicitado anteriormente e ainda não recebeu SMS.
POST https://virtualsms.org/api-c/cancelar.php| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| api_key | string | Sim | Sua chave de API | 
| id_compra | integer | Sim | ID da compra que deseja cancelar | 
{
    "status": "success",
    "message": "Compra cancelada com sucesso, saldo atualizado."
}<?php
$url = "https://virtualsms.org/api-c/cancelar.php";
$apiKey = "SUA_API_KEY";
$idCompra = 11433;
$data = [
    'api_key' => $apiKey,
    'id_compra' => $idCompra
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo "Erro na requisição: " . curl_error($ch);
} else {
    $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($httpStatus === 200) {
        $responseData = json_decode($response, true);
        if (json_last_error() === JSON_ERROR_NONE) {
            echo "Resposta da API: " . print_r($responseData, true);
        } else {
            echo "Erro ao decodificar JSON: " . json_last_error_msg();
            echo "Resposta bruta: " . $response;
        }
    } else {
        echo "Erro na resposta. Código de status: $httpStatus\nResposta: $response";
    }
}
curl_close($ch);
?>import requests
url = "https://virtualsms.org/api-c/cancelar.php"
api_key = "SUA_API_KEY"
id_compra = 12345
data = {
    'api_key': api_key,
    'id_compra': id_compra
}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        response_json = response.json()
        print("Resposta da API:", response_json)
    else:
        print(f"Erro ao conectar à API. Código de status: {response.status_code}")
        print("Resposta:", response.text)
except requests.exceptions.RequestException as e:
    print(f"Erro ao conectar: {e}")const axios = require('axios');
const url = "https://virtualsms.org/api-c/cancelar.php";
const apiKey = "SUA_API_KEY";
const idCompra = 11433;
axios.post(url, {
    api_key: apiKey,
    id_compra: idCompra
})
.then(response => {
    console.log("Resposta da API:", response.data);
})
.catch(error => {
    if (error.response) {
        console.error("Erro na resposta:", error.response.status, error.response.data);
    } else {
        console.error("Erro na requisição:", error.message);
    }
});Use este endpoint para verificar se já foi recebido um código SMS para o número solicitado.
POST https://virtualsms.org/api-c/verificar_codigo.php| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| api_key | string | Sim | Sua chave de API | 
| id_compra | integer | Sim | ID da compra que deseja verificar | 
{
    "status": "success",
    "message": {
        "codigo": "123456"
    }
}<?php
$url = "https://virtualsms.org/api-c/verificar_codigo.php";
$apiKey = "SUA_API_KEY";
$idCompra = 12345;
$data = [
    'api_key' => $apiKey,
    'id_compra' => $idCompra
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_status === 200) {
    $response_json = json_decode($response, true);
    echo "Resposta da API: ";
    print_r($response_json);
    file_put_contents("log.txt", "Resposta da API: " . print_r($response_json, true) . PHP_EOL, FILE_APPEND);
} else {
    echo "Erro ao conectar à API. Código de status: $http_status\n";
    echo "Resposta: $response";
}
?>import requests
url = "https://virtualsms.org/api-c/verificar_codigo.php"
api_key = "SUA_API_KEY"
id_compra = 12345
data = {
    'api_key': api_key,
    'id_compra': id_compra
}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        response_json = response.json()
        print("Resposta da API:", response_json)
        with open("log.txt", "a") as log_file:
            log_file.write(f"Resposta da API: {response_json}\n")
    else:
        print(f"Erro ao conectar à API. Código de status: {response.status_code}")
        print("Resposta:", response.text)
except requests.exceptions.RequestException as e:
    print(f"Erro ao conectar: {e}")const axios = require('axios');
const fs = require('fs');
const url = "https://virtualsms.org/api-c/verificar_codigo.php";
const apiKey = "SUA_API_KEY";
const idCompra = 12345;
const data = {
    api_key: apiKey,
    id_compra: idCompra
};
axios.post(url, data)
    .then(response => {
        console.log("Resposta da API:", response.data);
        fs.appendFileSync("log.txt", `Resposta da API: ${JSON.stringify(response.data)}\n`, 'utf8');
    })
    .catch(error => {
        if (error.response) {
            console.error(`Erro ao conectar à API. Código de status: ${error.response.status}`);
            console.error("Resposta:", error.response.data);
        } else {
            console.error("Erro na requisição:", error.message);
        }
    });Use este endpoint para solicitar um novo SMS para um número já comprado, quando o serviço permite múltiplas mensagens.
POST https://virtualsms.org/api-c/novo_sms.php| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| api_key | string | Sim | Sua chave de API | 
| id_compra | integer | Sim | ID da compra que deseja solicitar novo SMS | 
{
    "status": "success",
    "message": "Código resetado e quant_sms incrementado com sucesso!"
}<?php
$url = "https://virtualsms.org/api-c/novo_sms.php";
$apiKey = "SUA_API_KEY";
$idCompra = 12345;
$data = [
    'api_key' => $apiKey,
    'id_compra' => $idCompra
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_status === 200) {
    $responseData = json_decode($response, true);
    echo "Resposta da API: ";
    print_r($responseData);
} else {
    echo "Erro ao conectar à API. Código de status: $http_status\n";
    echo "Resposta: $response";
}
?>import requests
url = "https://virtualsms.org/api-c/novo_sms.php"
api_key = "SUA_API_KEY"
id_compra = 12345
data = {
    'api_key': api_key,
    'id_compra': id_compra
}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        print("Resposta da API:", response.json())
    else:
        print(f"Erro ao conectar à API. Código de status: {response.status_code}")
        print("Resposta:", response.text)
except requests.exceptions.RequestException as e:
    print(f"Erro ao conectar: {e}")const axios = require('axios');
const url = "https://virtualsms.org/api-c/novo_sms.php";
const apiKey = "SUA_API_KEY";
const idCompra = 12345;
axios.post(url, {
    api_key: apiKey,
    id_compra: idCompra
})
.then(response => {
    console.log("Resposta da API:", response.data);
})
.catch(error => {
    if (error.response) {
        console.error(`Erro ao conectar à API. Código de status: ${error.response.status}`);
        console.error("Resposta:", error.response.data);
    } else {
        console.error("Erro na requisição:", error.message);
    }
});Use este endpoint para reativar um número que foi utilizado anteriormente para o mesmo serviço.
POST https://virtualsms.org/api-c/reativar.php?api_key=SUA_CHAVE_API| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| api_key | string | Sim | Sua chave de API (pode ser enviada via GET ou POST) | 
| numero | string | Sim | Número que deseja reativar | 
| id_servico | string | Sim | ID do serviço para o qual deseja reativar o número | 
{
    "error": false,
    "message": "Número reativado com sucesso!"
}<?php
$apiKey = "SUA_CHAVE_API_AQUI";
$numero = "NUMERO_A_REATIVAR";
$idServico = "ID_DO_SERVICO";
$url = "https://virtualsms.org/api-c/reativar.php?api_key=" . urlencode($apiKey);
$data = [
    'numero' => $numero,
    'id_servico' => $idServico
];
$options = [
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    ],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) {
    echo "Erro ao chamar a API.";
} else {
    $response = json_decode($result, true);
    print_r($response);
}
?>import requests
api_key = "SUA_CHAVE_API_AQUI"
numero = "NUMERO_A_REATIVAR"
id_servico = "ID_DO_SERVICO"
url = f"https://virtualsms.org/api-c/reativar.php?api_key={requests.utils.quote(api_key)}"
data = {
    'numero': numero,
    'id_servico': id_servico
}
response = requests.post(url, data=data)
if response.status_code == 200:
    print(response.json())
else:
    print("Erro ao chamar a API:", response.text)const axios = require('axios');
const apiKey = "SUA_CHAVE_API_AQUI";
const numero = "NUMERO_A_REATIVAR";
const idServico = "ID_DO_SERVICO";
const url = `https://virtualsms.org/api-c/reativar.php?api_key=${encodeURIComponent(apiKey)}`;
axios.post(url, {
    numero: numero,
    id_servico: idServico
})
.then(response => {
    console.log(response.data);
})
.catch(error => {
    console.error("Erro ao chamar a API:", error.response ? error.response.data : error.message);
});Este endpoint retorna a lista completa de serviços disponíveis na plataforma com seus respectivos detalhes.
POST https://virtualsms.org/api-c/servicos.php| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| api_key | string | Sim | Sua chave de API | 
{
    "status": "success",
    "message": "Serviços recuperados com sucesso.",
    "data": [
        {
            "id": 1,
            "id_servico": "twitter",
            "nome": "Twitter",
            "valor": "1.50",
            "valor_reativacao": "1.00",
            "is_verificacao": 0,
            "status": 1,
            "quant_sms": 1,
            "estoque": 150,
            "is_servico_bancario_exclusivo": 0,
            "link_imagem": "/img/twitter.png"
        },
        {
            "id": 2,
            "id_servico": "whatsapp",
            "nome": "WhatsApp",
            "valor": "2.00",
            "valor_reativacao": "1.50",
            "is_verificacao": 1,
            "status": 1,
            "quant_sms": 1,
            "estoque": 200,
            "is_servico_bancario_exclusivo": 0,
            "link_imagem": "/img/whatsapp.png"
        }
    ]
}<?php
$url = "https://virtualsms.org/api-c/servicos.php";
$api_key = "SUA_CHAVE_API";
$data = array('api_key' => $api_key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
    echo 'Erro na requisição: ' . curl_error($ch);
} else {
    $responseData = json_decode($response, true);
    echo "Resposta da API: ";
    print_r($responseData);
}
curl_close($ch);
?>import requests
url = 'https://virtualsms.org/api-c/servicos.php'
data = {'api_key': 'SUA_CHAVE_API'}
response = requests.post(url, data=data)
if response.status_code == 200:
    try:
        response_data = response.json()
        print('Resposta da API:', response_data)
    except ValueError:
        print('Erro ao decodificar a resposta JSON:', response.text)
else:
    print(f'Erro na requisição. Código de status: {response.status_code}')const axios = require('axios');
const url = 'https://virtualsms.org/api-c/servicos.php';
const data = { api_key: 'SUA_CHAVE_API' };
axios.post(url, data)
    .then(response => {
        console.log('Resposta da API:', response.data);
    })
    .catch(error => {
        console.error('Erro ao conectar à API:', error.response ? error.response.data : error.message);
    });Use este endpoint para verificar o status atual de um número (pendente, expirado, cancelado, etc.).
POST https://virtualsms.org/api-c/verificar_status.php| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| api_key | string | Sim | Sua chave de API | 
| id_compra | integer | Sim | ID da compra que deseja verificar | 
{
    "status": "success",
    "message": "Status da compra recuperado com sucesso.",
    "data": {
        "status": "pendente de sms"
    }
}<?php
$url = "https://virtualsms.org/api-c/verificar_status.php";
$apiKey = "SUA_API_KEY";
$idCompra = 12345;
$data = [
    'api_key' => $apiKey,
    'id_compra' => $idCompra
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_status === 200) {
    $responseData = json_decode($response, true);
    echo "Status do número: " . $responseData['data']['status'];
} else {
    echo "Erro ao verificar status: " . $response;
}
?>import requests
url = "https://virtualsms.org/api-c/verificar_status.php"
api_key = "SUA_API_KEY"
id_compra = 12345
data = {
    'api_key': api_key,
    'id_compra': id_compra
}
try:
    response = requests.post(url, data=data)
    if response.status_code == 200:
        print("Status do número:", response.json()['data']['status'])
    else:
        print(f"Erro ao verificar status: {response.text}")
except requests.exceptions.RequestException as e:
    print(f"Erro na requisição: {e}")const axios = require('axios');
const url = "https://virtualsms.org/api-c/verificar_status.php";
const apiKey = "SUA_API_KEY";
const idCompra = 12345;
axios.post(url, {
    api_key: apiKey,
    id_compra: idCompra
})
.then(response => {
    console.log("Status do número:", response.data.data.status);
})
.catch(error => {
    console.error("Erro ao verificar status:", error.response ? error.response.data : error.message);
});Todas as respostas da API são retornadas no formato JSON com uma estrutura consistente.
{
    "status": "success" | "error",
    "message": "Mensagem descritiva do resultado",
    "data": { ... } // Dados adicionais quando aplicável
}| Código | Significado | Descrição | 
|---|---|---|
| 200 | OK | Requisição bem-sucedida | 
| 400 | Bad Request | Parâmetros inválidos ou faltando | 
| 401 | Unauthorized | Chave de API inválida ou ausente | 
| 403 | Forbidden | Acesso negado (usuário bloqueado, etc.) | 
| 404 | Not Found | Recurso não encontrado | 
| 500 | Internal Server Error | Erro no servidor | 
A API retorna mensagens de erro descritivas para ajudar na identificação e resolução de problemas.
| Mensagem de Erro | Causa Provável | Solução | 
|---|---|---|
| Chave de API inválida | Chave de API incorreta ou não fornecida | Verifique sua chave de API no painel administrativo | 
| Saldo insuficiente | Saldo na conta é menor que o valor do serviço | Recarregue seu saldo | 
| Serviço não encontrado | ID do serviço não existe ou está inativo | Verifique a lista de serviços disponíveis | 
| Nenhum número disponível | Todos os números estão em uso para o serviço solicitado | Tente novamente mais tarde ou contate o suporte | 
| Compra não encontrada | ID da compra não existe ou não pertence ao usuário | Verifique o histórico de compras |