API και developers · 3 λεπτά ανάγνωση

Πώς παίρνω API key και στέλνω το πρώτο SMS με curl και PHP

Το API Token από το μενού Developers, η κλήση αποστολής στο sms.isend.gr/api/http/sms/send με όλα τα πεδία, η απάντηση, ο έλεγχος κατάστασης και υπολοίπου, και πλήρη παραδείγματα σε curl και PHP.

Τελευταίος έλεγχος:

Το API του iSend στέλνει SMS από οποιοδήποτε δικό σας σύστημα με μία κλήση HTTP. Η πιστοποίηση γίνεται με API Token που δημιουργείτε στο μενού Developers της πλατφόρμας και στέλνετε ως Bearer token στην επικεφαλίδα Authorization. Η αποστολή είναι ένα POST στη διεύθυνση https://sms.isend.gr/api/http/sms/send με σώμα JSON που περιέχει τον παραλήπτη, τον αποστολέα και το μήνυμα. Η απάντηση επιστρέφει το αναγνωριστικό του μηνύματος, με το οποίο ελέγχετε αργότερα την κατάσταση παράδοσης.

Πώς παίρνετε το API Token

  1. Συνδεθείτε στην πλατφόρμα και ανοίξτε το μενού Developers.
  2. Στην κάρτα API Token πατήστε το κουμπί εμφάνισης και μετά Αντιγραφή. Αποθηκεύστε το στις ρυθμίσεις του συστήματός σας, όχι σε αρχείο που βλέπουν άλλοι.
  3. Αν το χάσετε ή υποψιάζεστε ότι διέρρευσε, πατήστε Αναδημιουργία token. Το νέο εμφανίζεται μία φορά, αντιγράψτε το αμέσως. Το παλιό παύει να ισχύει.

Το token δίνει πρόσβαση σε όλο τον λογαριασμό σας: αποστολές, επαφές, υπόλοιπο. Δεν το βάζετε ποτέ σε κώδικα που τρέχει στον browser του επισκέπτη ή σε εφαρμογή κινητού. Οι κλήσεις γίνονται από τον δικό σας server.

Η κλήση αποστολής

POST https://sms.isend.gr/api/http/sms/send
Authorization: Bearer ΤΟ_API_TOKEN_ΣΑΣ
Content-Type: application/json
Accept: application/json
Πεδίο Υποχρεωτικό Τι περιέχει
recipient Ναι Ο αριθμός με κωδικό χώρας, π.χ. 306912345678. Περισσότεροι αριθμοί χωρισμένοι με κόμμα.
message Ναι Το κείμενο. Τα ελληνικά φεύγουν σε κεφαλαία χωρίς τόνους, έως 155 χαρακτήρες ανά τμήμα. Δέχεται ετικέτες προσωποποίησης για αριθμούς που υπάρχουν ως επαφές.
sender_id Ναι Ένα ενεργό Sender ID του λογαριασμού σας. Χωρίς αυτό το μήνυμα δεν φεύγει και στις Αναφορές εμφανίζεται «No Sender ID».
type Όχι plain για SMS. Είναι η προεπιλογή. Η κωδικοποίηση επιλέγεται αυτόματα από το κείμενο.
schedule_time Όχι Ημερομηνία και ώρα αποστολής σε ώρα Ελλάδας, μορφή YYYY-MM-DD HH:MM. Χωρίς αυτό φεύγει αμέσως.
transactional Όχι true για μηνύματα συναλλαγής, όπως κωδικοί και ενημερώσεις παραγγελίας. Δεν προστίθεται ο σύνδεσμος STOP και παραδίδονται και σε διαγραμμένους παραλήπτες. Μόνο για μη διαφημιστικό περιεχόμενο.

Παράδειγμα με curl

curl -X POST https://sms.isend.gr/api/http/sms/send \
  -H "Authorization: Bearer ΤΟ_API_TOKEN_ΣΑΣ" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "recipient": "306912345678",
    "sender_id": "MyShop",
    "message": "Η ΠΑΡΑΓΓΕΛΙΑ 1042 ΕΦΥΓΕ ΣΗΜΕΡΑ. ΠΑΡΑΔΟΣΗ ΑΥΡΙΟ.",
    "transactional": true
  }'

Παράδειγμα σε PHP

<?php
$payload = [
    'recipient'     => '306912345678',
    'sender_id'     => 'MyShop',
    'message'       => 'Η ΠΑΡΑΓΓΕΛΙΑ 1042 ΕΦΥΓΕ ΣΗΜΕΡΑ. ΠΑΡΑΔΟΣΗ ΑΥΡΙΟ.',
    'transactional' => true,
];

$ch = curl_init('https://sms.isend.gr/api/http/sms/send');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . getenv('ISEND_API_TOKEN'),
        'Content-Type: application/json',
        'Accept: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode($payload, JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($response['status'] ?? '') === 'success') {
    $uid = $response['data']['uid'];   // κρατήστε το για έλεγχο κατάστασης
} else {
    error_log('iSend: ' . ($response['message'] ?? 'unknown error'));
}

Το token διαβάζεται από μεταβλητή περιβάλλοντος, όχι από το ίδιο το αρχείο. Σε WordPress ή Laravel το βάζετε στο αρχείο ρυθμίσεων του project.

Η απάντηση

Επιτυχής αποστολή:

{
  "status": "success",
  "data": {
    "uid": "6415907d0d7a6",
    "to": "306912345678",
    "from": "MyShop",
    "message": "Η ΠΑΡΑΓΓΕΛΙΑ 1042 ΕΦΥΓΕ ΣΗΜΕΡΑ. ΠΑΡΑΔΟΣΗ ΑΥΡΙΟ.",
    "cost": 1,
    "sms_count": 1,
    "status": "Sent"
  },
  "message": "Sent"
}

Το sms_count είναι τα τμήματα, άρα οι μονάδες που χρεώθηκαν. Το uid είναι το αναγνωριστικό για τον έλεγχο κατάστασης. Σε αποστολή προς πολλούς αριθμούς η κλήση δημιουργεί καμπάνια και επιστρέφει τα στοιχεία της.

Σφάλμα:

{"status": "error", "message": "The recipient field is required."}

Τα συνηθισμένα σφάλματα είναι λάθος ή ληγμένο token, κενό ή λάθος πεδίο, Sender ID που δεν είναι ενεργό στον λογαριασμό, και ανεπαρκές υπόλοιπο. Το κείμενο στο message λέει ποιο από αυτά.

Έλεγχος κατάστασης και υπολοίπου

Η κατάσταση παράδοσης ενημερώνεται όταν φτάσει η αναφορά από το δίκτυο, συνήθως μέσα σε λίγα δευτερόλεπτα:

GET https://sms.isend.gr/api/http/sms/{uid}
Authorization: Bearer ΤΟ_API_TOKEN_ΣΑΣ

Η απάντηση περιέχει το customer_status με τις ίδιες τιμές που βλέπετε στις Αναφορές: Sent, Delivered, Undelivered, Failed, Expired, Rejected. Το άρθρο για τις καταστάσεις παράδοσης εξηγεί την καθεμία. Για μηνύματα που καταλήγουν σε αποτυχία οι μονάδες επιστρέφονται αυτόματα.

Το υπόλοιπο μονάδων του λογαριασμού:

GET https://sms.isend.gr/api/http/balance
Authorization: Bearer ΤΟ_API_TOKEN_ΣΑΣ

Χρήσιμο για να ειδοποιείται το σύστημά σας πριν τελειώσουν οι μονάδες.

Τι άλλο κάνει το API

Με το ίδιο token διαχειρίζεστε επαφές και ομάδες, για παράδειγμα προσθέτετε έναν νέο πελάτη σε ομάδα τη στιγμή που εγγράφεται στο σύστημά σας. Το άρθρο για τις ομάδες επαφών έχει την κλήση. Η πλήρης τεκμηρίωση, με όλα τα endpoints για επαφές, ομάδες, καμπάνιες, πρότυπα και αναφορές, βρίσκεται μέσα στην πλατφόρμα, στο μενού Developers, με παραδείγματα που περιέχουν ήδη τη δική σας διεύθυνση.

Πέντε κανόνες για σωστή ενσωμάτωση

  • Στείλτε τα μηνύματα συναλλαγής με transactional: true και τα διαφημιστικά χωρίς. Το διαφημιστικό περιεχόμενο με την ένδειξη συναλλαγής παραβιάζει τη συγκατάθεση των διαγραμμένων παραληπτών.
  • Κρατήστε το uid κάθε αποστολής στη βάση σας, ώστε να μπορείτε να ελέγξετε τι παραδόθηκε.
  • Μην ξαναστέλνετε αυτόματα σε αποτυχία χωρίς να δείτε την αιτία. Ένας λάθος αριθμός αποτυγχάνει κάθε φορά.
  • Το όριο είναι 30 κλήσεις αποστολής το λεπτό ανά token. Για πολλούς παραλήπτες με το ίδιο μήνυμα, βάλτε τους αριθμούς με κόμμα σε μία κλήση αντί για μία κλήση ανά αριθμό.
  • Για διαφημιστικά μηνύματα, προσθέστε πρώτα τον παραλήπτη ως επαφή σε ομάδα και μετά στείλτε. Έτσι το μήνυμα παίρνει τον σύνδεσμο διαγραφής STOP και η πλατφόρμα σέβεται όσους έχουν ήδη διαγραφεί.
  • Δοκιμάστε πρώτα στο δικό σας κινητό. Ο δοκιμαστικός λογαριασμός με τα 50 SMS καλύπτει μια πλήρη ενσωμάτωση.

Συχνές ερωτήσεις

Χρεώνεται η κλήση αν το μήνυμα δεν σταλεί;

Όχι. Χρεώνονται μόνο τα μηνύματα που παραδίδονται στο δίκτυο, και όσα καταλήξουν σε κατάσταση αποτυχίας επιστρέφουν τις μονάδες τους αυτόματα. Κλήση που απορρίπτεται για λάθος πεδίο ή λάθος token δεν χρεώνει τίποτα.

Μπορώ να στείλω σε πολλούς αριθμούς με μία κλήση;

Ναι. Βάλτε τους αριθμούς στο πεδίο recipient χωρισμένους με κόμμα. Η πλατφόρμα δημιουργεί καμπάνια και στέλνει σε όλους το ίδιο μήνυμα. Για διαφορετικό κείμενο ανά παραλήπτη, κάντε ξεχωριστές κλήσεις ή χρησιμοποιήστε ετικέτες προσωποποίησης για επαφές που υπάρχουν στις λίστες σας.

Σε ποια γλώσσα προγραμματισμού δουλεύει;

Σε οποιαδήποτε κάνει κλήσεις HTTPS με JSON: PHP, Python, Node.js, C#, Java, ή ακόμη και ένα εργαλείο αυτοματισμού όπως το Make ή το n8n. Το μόνο που χρειάζεται είναι η επικεφαλίδα Authorization με το token και το σώμα JSON.

Σας βοήθησε αυτό το άρθρο;
Ευχαριστούμε. Αν θέλετε, πείτε μας τι έλειπε.

Σχετικά άρθρα

Δεν βρήκατε την απάντηση;

Η ομάδα του iSend απαντά Δευτέρα έως Παρασκευή 09:00 έως 16:00, στο 2310 501 800 ή με email.