POST Enviar mensaje universal (lagacy)
/panel/api_wa.php
Endpoint principal de envio. Acepta texto y archivo (imagen/video/audio/documento/sticker) en una sola llamada. Es el modo recomendado para sistemas externos con el token del sistema anterior.
Ejemplos de uso
13 lenguajes
cURL
curl -X POST 'https://panel.multimensajes.com/panel/api_wa.php' \
-d 'token=TU_TOKEN_AQUI' \
-d 'destinatario=521000000000' \
-d 'mensaje=Hola desde cURL'
PHP (cURL)
<?php
$ch = curl_init('https://panel.multimensajes.com/panel/api_wa.php');
$data = [
'token' => 'TU_TOKEN_AQUI',
'destinatario' => '521000000000',
'mensaje' => 'Hola desde PHP + cURL',
// 'mime' => '<base64 del archivo>',
// 'tipomime' => 'image/jpeg',
// 'modo' => 'directo',
];
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($data),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP $http_code: $response\n";
Python (requests)
import requests
response = requests.post(
'https://panel.multimensajes.com/panel/api_wa.php',
data={
'token': 'TU_TOKEN_AQUI',
'destinatario': '521000000000',
'mensaje': 'Hola desde Python requests',
},
timeout=30,
)
print(f"Status: {response.status_code}")
print(f"Body: {response.text}")
Node.js (fetch)
// Node 18+ tiene fetch nativo
const params = new URLSearchParams({
token: 'TU_TOKEN_AQUI',
destinatario: '521000000000',
mensaje: 'Hola desde Node.js fetch',
});
const response = await fetch('https://panel.multimensajes.com/panel/api_wa.php', {
method: 'POST',
body: params,
});
console.log('Status:', response.status);
console.log('Body:', await response.text());
Java (OkHttp)
import okhttp3.*;
public class SendMessage {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
RequestBody formBody = new FormBody.Builder()
.add("token", "TU_TOKEN_AQUI")
.add("destinatario", "521000000000")
.add("mensaje", "Hola desde Java + OkHttp")
.build();
Request request = new Request.Builder()
.url("https://panel.multimensajes.com/panel/api_wa.php")
.post(formBody)
.build();
Response response = client.newCall(request).execute();
System.out.println("Status: " + response.code());
System.out.println("Body: " + response.body().string());
response.close();
}
}
Go
package main
import (
"fmt"
"io"
"net/http"
"net/url"
"strings"
)
func main() {
form := url.Values{}
form.Set("token", "TU_TOKEN_AQUI")
form.Set("destinatario", "521000000000")
form.Set("mensaje", "Hola desde Go")
req, _ := http.NewRequest("POST",
"https://panel.multimensajes.com/panel/api_wa.php",
strings.NewReader(form.Encode()))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Printf("Status: %d\n", resp.StatusCode)
fmt.Printf("Body: %s\n", string(body))
}
Ruby
require 'net/http'
require 'uri'
uri = URI('https://panel.multimensajes.com/panel/api_wa.php')
res = Net::HTTP.post_form(uri, {
'token' => 'TU_TOKEN_AQUI',
'destinatario' => '521000000000',
'mensaje' => 'Hola desde Ruby',
})
puts "Status: #{res.code}"
puts "Body: #{res.body}"
C#
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var client = new HttpClient();
var content = new FormUrlEncodedContent(new[] {
new KeyValuePair<string, string>("token", "TU_TOKEN_AQUI"),
new KeyValuePair<string, string>("destinatario", "521000000000"),
new KeyValuePair<string, string>("mensaje", "Hola desde C#"),
});
var response = await client.PostAsync(
"https://panel.multimensajes.com/panel/api_wa.php", content);
var body = await response.Content.ReadAsStringAsync();
System.Console.WriteLine($"Status: {(int)response.StatusCode}");
System.Console.WriteLine($"Body: {body}");
}
}
Postman (JSON)
{
"info": {
"name": "Enviar mensaje universal (lagacy)",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Enviar mensaje universal (lagacy)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/x-www-form-urlencoded"
}
],
"url": {
"raw": "https://panel.multimensajes.com/panel/api_wa.php",
"protocol": "https",
"host": ["panel", "multimensajes", "com"],
"path": "/panel/api_wa.php"
},
"body": {
"mode": "raw",
"raw": {
"token": "{{TU_TOKEN_AQUI}}",
"destinatario": "521000000000",
"mensaje": "Hola desde Postman"
}
}
}
}
]
}
RapidAPI (PHP)
// RapidAPI / API Gateway compatible
// Endpoint: /panel/api_wa.php
$response = Unirest\Request::post(
"https://panel.multimensajes.com/panel/api_wa.php",
[
"Content-Type" => "application/x-www-form-urlencoded",
"Accept" => "application/json"
],
[
"token" => "TU_TOKEN_AQUI // string",
"destinatario" => "521000000000 // string",
"mensaje" => "Hola desde la API // string",
"tipomime" => "valor // string",
"mime" => "image/png // string",
"modo" => "valor // string",
"marcarleido" => "valor // string",
"idmensaje" => "valor // string"
]
);
$response->code; // HTTP status
$response->body; // parsed JSON / string
Python (http.client)
import http.client
import urllib.parse
conn = http.client.HTTPSConnection('panel.multimensajes.com')
data = urllib.parse.urlencode({
'token': 'TU_TOKEN_AQUI',
'destinatario': '521000000000',
'mensaje': 'Hola desde http.client',
})
conn.request('POST', '/panel/api_wa.php', body=data,
headers={'Content-Type': 'application/x-www-form-urlencoded'})
response = conn.getresponse()
print(f"Status: {response.status}")
print(response.read().decode())
conn.close()
Node.js (axios)
import axios from 'axios';
const response = await axios.post(
'https://panel.multimensajes.com/panel/api_wa.php',
new URLSearchParams({
token: 'TU_TOKEN_AQUI',
destinatario: '521000000000',
mensaje: 'Hola desde Axios',
}),
);
console.log('Status:', response.status);
console.log('Body:', response.data);
PHP (Guzzle)
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://panel.multimensajes.com', 'timeout' => 30]);
$response = $client->post('/panel/api_wa.php', [
'form_params' => [
'token' => 'TU_TOKEN_AQUI',
'destinatario' => '521000000000',
'mensaje' => 'Hola desde Guzzle',
],
]);
echo "Status: " . $response->getStatusCode() . "\n";
echo "Body: " . $response->getBody() . "\n";
Respuestas
Exito
HTTP 200 · text/plain
OK-1935
Error
HTTP 4xx
ERROR-TOKEN INVALIDO
Notas
- El mismo endpoint sirve para texto, imagen, video, audio, documento y sticker. La categoria se detecta por el prefijo del MIME.
- Mantiene compatibilidad 1:1 con el sistema anterior (multi_clientes / multi_lineas). Los clientes existentes NO requieren cambios.
- Para llamadas sin archivo, omite tipomime y mime.
Alternativa moderna (Bearer)
Para nuevos proyectos
Si arrancas un proyecto nuevo, considera el endpoint Bearer equivalente. Ofrece JSON nativo, anti-duplicado automatico y modo directo=1.