API Quickstart

Questa guida ti mostrerà come inviare il tuo primo messaggio utilizzando le API di UniMsg. In pochi minuti sarai operativo.

Prerequisiti

Step 1: Ottenere un Access Token

UniMsg utilizza OAuth 2.0 con il flusso Client Credentials. Per prima cosa, ottieni un access token:

cURL

curl -X POST https://api.unimsg.app/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=demo_xxxxxxxxxxxx" \
  -d "client_secret=sk_test_xxxxxxxxxxxx"

PHP

<?php
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.unimsg.app/oauth/token',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query([
        'grant_type' => 'client_credentials',
        'client_id' => 'demo_xxxxxxxxxxxx',
        'client_secret' => 'sk_test_xxxxxxxxxxxx'
    ])
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
$accessToken = $data['access_token'];
curl_close($ch);

Python

import requests

response = requests.post('https://api.unimsg.app/oauth/token', data={
    'grant_type': 'client_credentials',
    'client_id': 'demo_xxxxxxxxxxxx',
    'client_secret': 'sk_test_xxxxxxxxxxxx'
})

access_token = response.json()['access_token']

Node.js

const axios = require('axios');

const response = await axios.post('https://api.unimsg.app/oauth/token',
    new URLSearchParams({
        grant_type: 'client_credentials',
        client_id: 'demo_xxxxxxxxxxxx',
        client_secret: 'sk_test_xxxxxxxxxxxx'
    })
);

const accessToken = response.data.access_token;

Risposta:

{
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "token_type": "Bearer",
    "expires_in": 3600
}
Nota: L'access token ha una durata di 1 ora. Salvalo e riutilizzalo fino alla scadenza.

Step 2: Inviare un SMS

Con l'access token, puoi ora inviare messaggi. Ecco un esempio per SMS:

cURL

curl -X POST https://api.unimsg.app/v1/sms/send \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+39123456789",
    "message": "Ciao! Questo è un messaggio di test da UniMsg.",
    "sender": "UniMsg"
  }'

PHP

<?php
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.unimsg.app/v1/sms/send',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $accessToken,
        'Content-Type: application/json'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'to' => '+39123456789',
        'message' => 'Ciao! Questo è un messaggio di test da UniMsg.',
        'sender' => 'UniMsg'
    ])
]);
$response = curl_exec($ch);
$result = json_decode($response, true);
curl_close($ch);

if ($result['success']) {
    echo "Messaggio inviato! ID: " . $result['data']['message_id'];
}

Python

import requests

response = requests.post(
    'https://api.unimsg.app/v1/sms/send',
    headers={
        'Authorization': f'Bearer {access_token}',
        'Content-Type': 'application/json'
    },
    json={
        'to': '+39123456789',
        'message': 'Ciao! Questo è un messaggio di test da UniMsg.',
        'sender': 'UniMsg'
    }
)

result = response.json()
if result['success']:
    print(f"Messaggio inviato! ID: {result['data']['message_id']}")

Node.js

const axios = require('axios');

const response = await axios.post('https://api.unimsg.app/v1/sms/send', {
    to: '+39123456789',
    message: 'Ciao! Questo è un messaggio di test da UniMsg.',
    sender: 'UniMsg'
}, {
    headers: {
        'Authorization': `Bearer ${accessToken}`,
        'Content-Type': 'application/json'
    }
});

if (response.data.success) {
    console.log(`Messaggio inviato! ID: ${response.data.data.message_id}`);
}

Risposta di successo:

{
    "success": true,
    "data": {
        "message_id": "msg_xxxxxxxxxxxx",
        "status": "queued",
        "credits_used": 1,
        "created_at": "2024-01-15T10:30:00Z"
    }
}

Step 3: Verificare lo Stato

Puoi controllare lo stato di un messaggio usando il suo ID:

curl -X GET https://api.unimsg.app/v1/messages/msg_xxxxxxxxxxxx \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Risposta:

{
    "success": true,
    "data": {
        "message_id": "msg_xxxxxxxxxxxx",
        "channel": "sms",
        "to": "+39123456789",
        "status": "delivered",
        "status_history": [
            {"status": "queued", "timestamp": "2024-01-15T10:30:00Z"},
            {"status": "sent", "timestamp": "2024-01-15T10:30:01Z"},
            {"status": "delivered", "timestamp": "2024-01-15T10:30:03Z"}
        ],
        "credits_used": 1
    }
}

Gestione Errori

In caso di errore, l'API restituisce una risposta con success: false:

{
    "success": false,
    "error": {
        "code": "INSUFFICIENT_CREDITS",
        "message": "Crediti insufficienti per completare l'operazione"
    }
}

Codici Errore Comuni

Codice Descrizione Soluzione
UNAUTHORIZED Token non valido o scaduto Rigenera l'access token
INSUFFICIENT_CREDITS Crediti non sufficienti Ricarica il tuo account
INVALID_PHONE Numero telefono non valido Verifica il formato (+39...)
RATE_LIMITED Troppi richieste Riprova dopo qualche secondo

Prossimi Passi