Create Sub-account
This request is used to create a sub-account.
URL
POST
https://api.smspartner.fr/v1/subaccount/create
Required Parameters
apiKey
type
Type of sub-account: this choice is final and cannot be modified later.
simple
: – The sub-account will not receive any emails or SMS. – No phone number is required. – Purchases are not allowed.advanced
: – A valid email is required. – Registration process is the same as a standard account. – A mobile phone number will be required at signup.
parameters
See below, depending on the sub-account type:
Simple sub-account parameters:
email
(optional): If left empty, an email will be generated automatically (e.g., 98755587@smspartner.fr)creditToAttribute
(optional): Credits in euros added to the sub-account upon creation. These credits will be deducted from your master account.title
,firstname
,lastname
(optional): Sub-account’s title and owner’s names.
Advanced sub-account parameters:
email
: Valid email address of the sub-account ownerisBuyer
:1
or0
— if1
, the sub-account can buy SMS on its own.Same optional fields as above (
creditToAttribute
,title
,firstname
,lastname
)
Requests
<?php
// Prepare data for POST request
$fields = array(
'apiKey'=> 'YOUR API KEY',
'type'=> 'advanced',
'parameters'=>array(
'email':'aaaa@bbb.ccc',
'creditToAttribute':10,
'isBuyer':0,
'firstname':'prenom',
'lastname':'nom'
));
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,'https://api.smspartner.fr/v1/subaccount/create');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS,json_encode($fields));
$result = curl_exec($curl);
curl_close($curl);
// Process your response here
echo $result;
?>
Imports System.IO
Imports System.Net
Module Module1
Sub Main()
Dim base_url As String = "http://api.smspartner.fr/v1/"
Dim apiKey As String = "VOTRE_APIKEY"
#send sms
url = base_url & "subaccount/create"
#note : utiliser une librairie JSON en production, par exemple :
#https//www.nuget.org/packages/Newtonsoft.Json/
Dim parameters As String = String.Format(
"{{""apiKey"":""{0}"",""type"":""{1}"",""parameters"":""{2}""}}",
apiKey,
"advanced",
{"email":"aaaa@bbb.ccc","creditToAttribute":10,"isBuyer":0,"firstname":"prenom","lastname":"nom"})
Console.Write(parameters)
apiRequest("POST", url, parameters)
End Sub
Function apiRequest(method As String, url As String, parameters As String) As String
Dim request As HttpWebRequest
request = WebRequest.Create(url)
request.Method = method
request.Timeout = 10000 # timeout in ms
request.ContentType = "application/json; charset=utf-8"
request.ContentLength = 0
#set POST data
If Not String.IsNullOrEmpty(parameters) Then
request.ContentLength = parameters.Length
Using reqStream As StreamWriter = New StreamWriter(request.GetRequestStream())
reqStream.Write(parameters)
End Using
End If
#get response
Dim returnValue As String = Nothing
Using response As HttpWebResponse = request.GetResponse()
If response.StatusCode = HttpStatusCode.OK Then
Using resStream = response.GetResponseStream()
If resStream IsNot Nothing Then
Using reader As New StreamReader(resStream)
returnValue = reader.ReadToEnd()
End Using
End If
End Using
End If
End Using
apiRequest = returnValue
End Function
End Module
# std
import logging
import json
from collections import OrderedDict
# 3p
import requests
API_KEY = "MY API KEY"
URL = "https://api.smspartner.fr/v1"
class SMSPartner():
def create(self,creditToAdd,userId):
data = {"apiKey":APIKEY,"type":"advanced","parameters": {"email":"aaaa@bbb.ccc","creditToAttribute":10,"isBuyer":0,"firstname":"prenom","lastname":"nom"}}
url = URL + "/subaccount/create"
r = requests.post(url, data=json.dumps(data), verify=False)
r_json = r.json()
if r_json.get("success") == True:
print(r_json)
status = True
else:
print(r_json)
status = False
return status
curl -H "Content-Type: application/json" -X POST -d '{"apiKey":"xxxxx","type":"advanced","parameters":{"email":"aaaa@bbb.ccc","creditToAttribute":10,"isBuyer":0,"firstname":"prenom","lastname":"nom"}}' https://api.smspartner.fr/v1/subaccount/create
const https = require("https");
// Remplacez par votre clé API
const apiKey = "VOTRE_CLÉ_API";
// Préparer les données pour la requête POST
const data = JSON.stringify({
apiKey: apiKey,
type: "advanced",
parameters: {
email: "aaaa@bbb.ccc",
creditToAttribute: 10,
isBuyer: 0,
firstname: "prenom",
lastname: "nom",
},
});
// Définir les options pour la requête HTTP POST vers l'API SMS Partner
const options = {
hostname: "api.smspartner.fr",
port: 443,
path: "/v1/subaccount/create",
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": data.length,
"cache-control": "no-cache",
},
};
// Effectuer la requête HTTP POST avec les options et données définies précédemment
const req = https.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);
// Afficher les données de réponse de l'API sur la sortie standard
res.on("data", (d) => {
process.stdout.write(d);
});
});
// Afficher en cas d'erreur lors de l'exécution de la requête HTTP POST
req.on("error", (error) => {
console.error(error);
});
// Envoyer les données de l'objet 'data' à la demande
req.write(data);
// Terminer la demande HTTP POST
req.end();
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.stream.Collectors;
import org.json.JSONObject;
public class SubAccountCreation {
public static void main(String[] args) {
try {
// Remplacez par votre clé API
String apiKey = "VOTRE_CLÉ_API";
// Préparer les données pour la requête POST
JSONObject parameters = new JSONObject();
parameters.put("email", "aaaa@bbb.ccc");
parameters.put("creditToAttribute", 10);
parameters.put("isBuyer", 0);
parameters.put("firstname", "prenom");
parameters.put("lastname", "nom");
JSONObject json = new JSONObject();
json.put("apiKey", apiKey);
json.put("type", "advanced");
json.put("parameters", parameters);
URL url = new URL("https://api.smspartner.fr/v1/subaccount/create");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("cache-control", "no-cache");
conn.setDoOutput(true);
// Écriture des données JSON dans le corps de la requête HTTP
OutputStream os = conn.getOutputStream();
os.write(json.toString().getBytes());
os.flush();
// Lecture de la réponse de l'API
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String response = br.lines().collect(Collectors.joining());
// Afficher la réponse JSON
System.out.println(response);
// Fermeture de la connexion HTTP
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import SwiftUI
// Structure pour la vue "CreationSubCompte"
struct CreationSubCompte: View {
var body: some View {
// Un bouton qui appelle la fonction createSubaccount() lorsqu'il est pressé
Button(action: {
createSubaccount()
}) {
Text("Créer sous-compte")
.font(.system(size: 20))
.foregroundColor(.white)
.frame(minWidth: 0, maxWidth: .infinity)
.padding()
.background(LinearGradient(gradient: Gradient(colors: [Color.blue, Color.blue.opacity(0.8)]), startPoint: .top, endPoint: .bottom))
.cornerRadius(10)
.padding(.horizontal)
}
}
// Fonction pour créer un sous-compte
func createSubaccount() {
let url = URL(string: "https://api.smspartner.fr/v1/subaccount/create")! // URL pour créer un sous-compte
// Paramètres pour la requête
let parameters: [String: Any] = [
"apiKey": "TU_CLAVE_API", // Votre clé API
"type": "advanced",
"parameters": [
"email": "aaaa@bbb.ccc", // Adresse e-mail du sous-compte
"creditToAttribute": 10, // Crédit à attribuer
"isBuyer": 0, // Indique si le sous-compte est un acheteur
"firstname": "prenom", // Prénom de l'utilisateur du sous-compte
"lastname": "nom" // Nom de l'utilisateur du sous-compte
] as [String : Any]
]
// Création de la requête
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("no-cache", forHTTPHeaderField: "cache-control")
// Ajout du corps de la requête
do {
request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
} catch let error {
print(error.localizedDescription)
}
// Tâche pour envoyer la requête et recevoir la réponse
let task = URLSession.shared.dataTask(with: request) { data, response, error in
// Si une erreur survient, on l'affiche
if let error = error {
print("Erreur : \(error)")
}
// Sinon, on traite les données reçues
else if let data = data {
do {
// On tente de convertir les données reçues en JSON
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
print(json) // On affiche le JSON obtenu
}
} catch let error {
print("Erreur : \(error)")
}
}
}
task.resume() // On lance la tâche
}
}
package main
import (
"bytes"
"encoding/json"
"io/ioutil"
"log"
"net/http"
)
type Fields struct {
APIKey string `json:"apiKey"`
Type string `json:"type"`
Parameters Parameters `json:"parameters"`
}
type Parameters struct {
Email string `json:"email"`
CreditToAttribute int `json:"creditToAttribute"`
IsBuyer int `json:"isBuyer"`
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
}
func main() {
// Prepare data for POST request
data := Fields{
APIKey: "YOUR_API_KEY",
Type: "advanced",
Parameters: Parameters{
Email: "aaaa@bbb.ccc",
CreditToAttribute: 10,
IsBuyer: 0,
Firstname: "prenom",
Lastname: "nom",
},
}
payloadBuf := new(bytes.Buffer)
json.NewEncoder(payloadBuf).Encode(data)
// Create POST request
req, err := http.NewRequest("POST", "https://api.smspartner.fr/v1/subaccount/create", payloadBuf)
if err != nil {
log.Fatalf("Error creating request: %v", err)
}
req.Header.Add("Content-Type", "application/json")
// Create HTTP client and send the request
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Fatalf("Error sending request: %v", err)
}
defer resp.Body.Close()
// Read the response
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Error reading response: %v", err)
}
// Print the response status and body
log.Printf("Response status: %s", resp.Status)
log.Printf("Response body: %s", string(body))
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
private static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args)
{
var fields = new
{
apiKey = "VOTRE_CLÉ_API",
type = "advanced",
parameters = new
{
email = "aaaa@bbb.ccc",
creditToAttribute = 10,
isBuyer = 0,
firstname = "prenom",
lastname = "nom"
}
};
var json = JsonConvert.SerializeObject(fields);
var uri = new Uri("https://api.smspartner.fr/v1/subaccount/create");
var content = new StringContent(json, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(uri, content);
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
else
{
Console.WriteLine("La requête POST a échoué avec le code d'état : " + response.StatusCode);
}
}
}
Response
{
"success":true,
"code":200,
"subaccount":
{
"email":"aaaa@bbb.ccc",
"token":"token"
},
"sendConfirmMailTo":"aaaa@bbb.ccc",
"parent_email":"emailparent@ddd.eee"
}
<?xml version="1.0" encoding="UTF-8"?>
<result>
<entry>true</entry>
<entry>200</entry>
<entry>
<entry><![CDATA[aaaa@bbb.ccc]]></entry>
<entry><![CDATA[token]]></entry>
</entry>
<entry><![CDATA[aaaa@bbb.ccc]]></entry>
<entry><![CDATA[emailparent@ddd.eee]]></entry>
</result>
Errors
{
"success": false,
"code": 10,
"message": "Invalid API key"
}
<?xml version="1.0" encoding="UTF-8"?>
<result>
<entry>false</entry>
<entry>10</entry>
<entry><![CDATA[Invalid API key]]></entry>
</result>
Error Codes
1
API key is required
2
Phone number is required
3
isBuyer
is required
4
type
is required (simple or advanced)
5
Sub-account type does not exist (must be simple or advanced)
6
Email is required
7
An account with this email already exists
8
creditToAttribute
must be greater than 0
9
Master account balance must be greater than 0
200
All good!
Last updated