MultiMensajes MultiMensajes / API Docs

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.

Modo principal
Auth token_legacy (en POST)
Content-Type application/x-www-form-urlencoded
Categoria Universal

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.