The group will be added to the queue for sending and sooner or later it
will be created, even if the phone is disconnected from the Internet or
the authorization is not passed.


2 Oct 2018 update: chatId parameter will be returned if group was
created on your phone within 20 second.

POST https://api.replier.net/group
Parameters
Name Type Description
instanceid required string
The instance sending the request. You will find it beside the instance in your dashboard.
Example: YOUR_INSTANCE_ID
token required string
The API token of that instance. Treat it as a secret: it authorises every call below.
Example: YOUR_INSTANCE_TOKEN
groupName required string
Name for the new WhatsApp group.
Example: Project team
phones required string
Members to add on creation, comma separated, in international format.
Example: 447700900123
Request test
sends a real request
This calls the live API with whatever you enter, so a send endpoint will deliver a real message. Replace the placeholder credentials with your own.
Response
Request samples
curl --request POST \
  --url 'https://api.replier.net/group' \
  --data-urlencode 'instanceid=YOUR_INSTANCE_ID' \
  --data-urlencode 'token=YOUR_INSTANCE_TOKEN' \
  --data-urlencode 'groupName=Project team' \
  --data-urlencode 'phones=447700900123'
<?php

$payload = [
    'instanceid' => 'YOUR_INSTANCE_ID',
    'token' => 'YOUR_INSTANCE_TOKEN',
    'groupName' => 'Project team',
    'phones' => '447700900123',
];

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://api.replier.net/group',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => http_build_query($payload),
]);

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

if ($error !== '') {
    throw new RuntimeException($error);
}

$result = json_decode($response, true);

// Every endpoint answers with {"success": bool, "msg": [...]} on failure.
if (isset($result['success']) && $result['success'] === false) {
    throw new RuntimeException('API error ' . implode(', ', $result['msg']));
}

print_r($result);
import requests

url = 'https://api.replier.net/group'
payload = {
    'instanceid': 'YOUR_INSTANCE_ID',
    'token': 'YOUR_INSTANCE_TOKEN',
    'groupName': 'Project team',
    'phones': '447700900123',
}

response = requests.post(url, data=payload, timeout=30)
response.raise_for_status()

result = response.json()

if result.get('success') is False:
    raise RuntimeError('API error: %s' % result.get('msg'))

print(result)
const url = 'https://api.replier.net/group';

const payload = new URLSearchParams({
  instanceid: 'YOUR_INSTANCE_ID',
  token: 'YOUR_INSTANCE_TOKEN',
  groupName: 'Project team',
  phones: '447700900123',
});

const response = await fetch(url, {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: payload,
});

const result = await response.json();

if (result.success === false) {
  throw new Error(`API error: ${result.msg.join(', ')}`);
}

console.log(result);
const axios = require('axios');

const payload = new URLSearchParams({
  instanceid: 'YOUR_INSTANCE_ID',
  token: 'YOUR_INSTANCE_TOKEN',
  groupName: 'Project team',
  phones: '447700900123',
});

(async () => {
  try {
    const { data } = await axios.post('https://api.replier.net/group', payload, { timeout: 30000 });

    if (data.success === false) {
      throw new Error(`API error: ${data.msg.join(', ')}`);
    }

    console.log(data);
  } catch (err) {
    console.error(err.message);
  }
})();
$.ajax({
  url: 'https://api.replier.net/group',
  method: 'POST',
  data: {
    instanceid: 'YOUR_INSTANCE_ID',
    token: 'YOUR_INSTANCE_TOKEN',
    groupName: 'Project team',
    phones: '447700900123',
  },
  dataType: 'json',
})
  .done(function (result) {
    if (result.success === false) {
      console.error('API error: ' + result.msg.join(', '));
      return;
    }

    console.log(result);
  })
  .fail(function (xhr) {
    console.error(xhr.status, xhr.responseText);
  });
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        var payload = new Dictionary<string, string>
        {
            { "instanceid", "YOUR_INSTANCE_ID" },
            { "token", "YOUR_INSTANCE_TOKEN" },
            { "groupName", "Project team" },
            { "phones", "447700900123" },
        };

        var response = await client.PostAsync("https://api.replier.net/group", new FormUrlEncodedContent(payload));
        response.EnsureSuccessStatusCode();

        var body = await response.Content.ReadAsStringAsync();
        Console.WriteLine(body);
    }
}
import java.io.IOException;
import okhttp3.*;

public class Example {
    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();

        FormBody.Builder form = new FormBody.Builder();
        form.add("instanceid", "YOUR_INSTANCE_ID");
        form.add("token", "YOUR_INSTANCE_TOKEN");
        form.add("groupName", "Project team");
        form.add("phones", "447700900123");

        Request request = new Request.Builder()
                .url("https://api.replier.net/group")
                .post(form.build())
                .build();

        try (Response response = client.newCall(request).execute()) {
            System.out.println(response.body().string());
        }
    }
}
require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.replier.net/group')

response = Net::HTTP.post_form(uri, {
  'instanceid' => 'YOUR_INSTANCE_ID',
  'token' => 'YOUR_INSTANCE_TOKEN',
  'groupName' => 'Project team',
  'phones' => '447700900123',
})

result = JSON.parse(response.body)

raise "API error: #{result['msg'].join(', ')}" if result['success'] == false

puts result
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"strings"
)

func main() {
	form := url.Values{}
	form.Set("instanceid", "YOUR_INSTANCE_ID")
	form.Set("token", "YOUR_INSTANCE_TOKEN")
	form.Set("groupName", "Project team")
	form.Set("phones", "447700900123")

	resp, err := http.Post(
		"https://api.replier.net/group",
		"application/x-www-form-urlencoded",
		strings.NewReader(form.Encode()),
	)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(body))
}

Samples use POST with a form-encoded body so credentials stay out of the URL. The API reads JSON bodies, form bodies and query strings alike. A GET with the same parameters in the query string works too.

Response

On failure, every endpoint answers with HTTP 200 and this envelope, where the string is a code from the error reference:

{
    "success": false,
    "msg": ["0008"]
}