მთავარ შიგთავსზე გადასვლა

API დოკუმენტაცია

sendsms.ge API საშუალებას გაძლევს გააგზავნო SMS, შეამოწმო სტატუსი და ბალანსი პირდაპირ შენი სისტემიდან. ყველა მოთხოვნა HTTPS-ით; პასუხი — JSON.

Base URL: https://sendsms.ge/api
გასაღების მისაღებად დარეგისტრირდი და მოითხოვე სათაური.

ავტორიზაცია

ყველა მოთხოვნა მოითხოვს key პარამეტრს — შენი ანგარიშის API გასაღებს. გადააწოდე query-ში ან POST body-ში.

SMS გაგზავნა

GET / POST

https://sendsms.ge/api/v2/send

პარამეტრები

პარამეტრისაჭიროებააღწერა
key სავალდებულო API გასაღები — იხილე პანელში „API" გვერდზე.
destination სავალდებულო მიმღები ნომერ(ებ)ი საერთაშორისო ფორმატით, + და 00 გარეშე (მაგ. 995599123456). მძიმით გამოყავი მრავალი ნომერი.
sender სავალდებულო დადასტურებული SMS სათაური (≤ 11 სიმბოლო).
content სავალდებულო ტექსტი. ნებისმიერი Unicode სიმბოლო, მაქს. 1000 სიმბოლო.
contentType არასავალდ. შეტყობინების ტიპი: 1 — ჩვეულებრივი (default), 2 — Flash.
reference არასავალდ. შენი ტეგი (მაგ. შეკვეთის ნომერი) — ამით შეადარებ სტატუსს შენს ჩანაწერს. მიწოდების სტატუსი მის გარეშეც ისევე მუშაობს.
urgent არასავალდ. true — გვერდს უვლის stop-სიას (sender უნდა იყოს whitelist-ში).
otp არასავალდ. true — ვერიფიკაციის კოდი, უმაღლესი პრიორიტეტით იგზავნება.
scheduledAt არასავალდ. Unix timestamp — დაგეგმილი გაგზავნის დრო.

მაგალითი

curl "https://sendsms.ge/api/v2/send?key=YOUR_API_KEY\
&sender=MyShop\
&destination=995599123456,995577654321\
&content=Hello%20World"
<?php
$query = http_build_query([
    'key'         => 'YOUR_API_KEY',
    'sender'      => 'MyShop',
    'destination' => '995599123456',
    'content'     => 'Hello World',
]);
$response = file_get_contents("https://sendsms.ge/api/v2/send?$query");
$data = json_decode($response, true);
var_dump($data);
import requests

r = requests.get("https://sendsms.ge/api/v2/send", params={
    "key": "YOUR_API_KEY",
    "sender": "MyShop",
    "destination": "995599123456",
    "content": "Hello World",
})
print(r.json())
const params = new URLSearchParams({
  key: "YOUR_API_KEY",
  sender: "MyShop",
  destination: "995599123456",
  content: "Hello World",
});
const res = await fetch(`https://sendsms.ge/api/v2/send?${params}`);
console.log(await res.json());

პასუხი

წარმატება
{
  "Success": true,
  "Message": "Accepted for delivery",
  "Output": {
    "smsID": "123456",
    "sent": 2,
    "segments": 1,
    "cost": 2,
    "invalid": []
  },
  "ErrorCode": 0
}
შეცდომა
{
  "Success": false,
  "Message": "Insufficient balance",
  "Output": null,
  "ErrorCode": 20
}

სტატუსის შემოწმება

GET

https://sendsms.ge/api/v2/getMessageStatus

სტატუსს შენ გვეკითხები — ჩვენ არაფერს გიგზავნით და შენი მხრიდან endpoint-ის აწყობა არ სჭირდება.

key და destination — სავალდებულო; reference — არასავალდებულო. თუ reference-ს არ მიუთითებ, პასუხი ამ ნომერზე ბოლოს გაგზავნილ შეტყობინებას ეხება. ნომერი ნებისმიერი ჩვეული ფორმატით მიიღება — 995599123456, +995 599 12 34 56 თუ 599123456.

curl "https://sendsms.ge/api/v2/getMessageStatus?key=YOUR_API_KEY&destination=995599123456&reference=order-42"

→ {
  "Success": true,
  "Output": {
    "Status": "Delivered",
    "DeliveredAt": "2026-07-25T22:03:11+04:00",
    "DeliveredAtUnix": 1785002591
  },
  "ErrorCode": 0
}
Statusრას ნიშნავს
Delivered ოპერატორმა დაადასტურა — ტელეფონზე მივიდა. საბოლოო.
Undelivered ვერ მივიდა: გამორთული ტელეფონი, აღარარსებული ნომერი, უარყოფილი. საბოლოო.
Expired ოპერატორმა ცდა შეწყვიტა მიწოდების გარეშე. საბოლოო.
Pending გაგზავნილია, ოპერატორის პასუხს ველოდებით. ჩვეულებრივ წამებში იცვლება, იშვიათად — რამდენიმე საათში. გადაამოწმე მოგვიანებით.
Unknown ასეთი შეტყობინება ვერ ვიპოვეთ ამ გასაღების ანგარიშზე — შეამოწმე ნომერი და reference. ეს არ არის შეცდომა: Success რჩება true, ErrorCode — 0.
ველიაღწერა
Status მიწოდების სტატუსი — იხ. ცხრილი ზემოთ.
DeliveredAt მიწოდების დრო ISO 8601 ფორმატით, თბილისის სარტყელში. ჯერ არ მიწოდებულზე — null.
DeliveredAtUnix იგივე დრო Unix timestamp-ად, თუ წამებში ითვლი. ჯერ არ მიწოდებულზე — null.
დრო ის მომენტია, როცა ოპერატორმა მიწოდება დაადასტურა — არა როცა ჩვენ შევიტყვეთ. 2026 წლის 26 ივლისამდე მიწოდებულ შეტყობინებებზე ეს დრო არ გვაქვს და null დაბრუნდება; სტატუსი მაინც სწორია.

მოთხოვნების ლიმიტი

წუთში 60 მოთხოვნა — ცალკე ითვლება თითოეულ გასაღებზე და თითოეულ endpoint-ზე. ანუ გაგზავნას თავისი 60 აქვს, სტატუსის შემოწმებას — თავისი: შენივე შემოწმება გაგზავნას ვერ დაგიბლოკავს.

ერთ მოთხოვნაში მრავალი ნომერი ერთ მოთხოვნად ითვლება — ამიტომ მასობრივი გაგზავნისას ნომრები მძიმით გამოყავი, თითოზე ცალკე ზარის ნაცვლად.

სათაურიაღწერა
X-RateLimit-Limit ლიმიტი წუთში.
X-RateLimit-Remaining რამდენი დაგრჩა ამ წუთში — ყოველ პასუხზე მოგდის.
Retry-After მხოლოდ 429-ზე: რამდენ წამში სცადო ხელახლა.

ლიმიტის გადაჭარბებისას HTTP 429 დაბრუნდება — იმავე ფორმით, რაც ყველა სხვა პასუხს აქვს:

{
  "Success": false,
  "Message": "Too many requests, retry in 37 seconds",
  "Output": null,
  "ErrorCode": 429
}

429 არ ნიშნავს, რომ SMS არ გაიგზავნა — ის ნიშნავს, რომ მოთხოვნა საერთოდ არ მიგვიღია. უსაფრთხოდ გაიმეორე Retry-After-ის შემდეგ.

ბალანსი

GET

https://sendsms.ge/api/getBalance

curl "https://sendsms.ge/api/getBalance?key=YOUR_API_KEY"

→ 4520

აბრუნებს დარჩენილი SMS-ების რაოდენობას (რიცხვი).

Delivery reports (Callback)

მიუთითე Callback URL API გვერდზე და გააგზავნე SMS reference-ით. სტატუსის შეცვლისას გამოგიგზავნით GET მოთხოვნას — პარამეტრები query string-შია, სხეული ცარიელია:

GET https://your-server.ge/callback?reference=order-42&status=Delivered
    &reason=&destination=995599123456×tamp=20260613184500&operator=

პარამეტრები

პარამეტრი აღწერა
reference შენი ტეგი, რომელიც გაგზავნისას მიუთითე — სწორედ ამით აკავშირებ რეპორტს შენს ჩანაწერთან. თუ არ გადმოგვეცი, ცარიელი მოვა. smsID არ იგზავნება.
status მიწოდების სტატუსი — იხილე სია ქვემოთ.
reason მიზეზი, როცა ცნობილია (მაგ. ოპერატორის უარი). ხშირად ცარიელია.
destination მიმღების ნომერი საერთაშორისო ფორმატით, 995-ით (მაგ. 995599123456).
timestamp დრო ფორმატით YmdHis (20260613184500). თუ ოპერატორმა დრო არ მოგვაწოდა — ცარიელია.
operator რეზერვირებულია. ამჟამად ყოველთვის ცარიელია.

status -ის შესაძლო მნიშვნელობები

Delivered, Undelivered, Expired, Pending, Unknown — სხვა სიტყვა არ იგზავნება. თუ უცნობი მნიშვნელობა მიიღე, ნუ ჩათვლი მიწოდებულად.

რაც უნდა გაითვალისწინო:

  • შენმა სერვერმა პასუხად უნდა დააბრუნოს OK.
  • ერთ SMS-ზე შეიძლება ერთზე მეტი მოთხოვნა მოვიდეს (მაგ. Pending, შემდეგ Delivered) — დაამუშავე იდემპოტენტურად.
  • თუ შენი სერვერი არ უპასუხებს, ხელახლა არ ვცდით — სტატუსი მაინც შენახულია და getMessageStatus-ით ყოველთვის ამოიღებ.
  • მოთხოვნა მოდის sendsms.ge-ის სერვერიდან; მოლოდინის დრო 10 წამია.

SMS დათვლა

ლათინური

160 სიმბოლომდე = 1 SMS. მეტი — იყოფა 153-სიმბოლოიან სეგმენტებად.

ქართული / Unicode

70 სიმბოლომდე = 1 SMS. მეტი — იყოფა 67-სიმბოლოიან სეგმენტებად.

ხარჯი = სეგმენტების რაოდენობა × მიმღები ნომრების რაოდენობა.

შეცდომის კოდები

ErrorCodeმნიშვნელობა
0 მიღებულია გასაგზავნად
10 destination შეიცავს არა-ქართულ ნომერს
20 არასაკმარისი ბალანსი
40 ტექსტი აჭარბებს დაშვებულ სიგრძეს
60 content ცარიელია
70 destination ცარიელია
75 ყველა ნომერი stop-სიაშია
76 ნომრის არასწორი ფორმატი
80 key-ით მომხმარებელი ვერ მოიძებნა
110 არასწორი sender
120 API წვდომა გათიშულია
150 sender არ არის რეგისტრირებული / აქტიური
500 key პარამეტრი აკლია
600 destination პარამეტრი აკლია
700 sender პარამეტრი აკლია
800 content პარამეტრი აკლია
429 ლიმიტს გადააჭარბე — იხ. „მოთხოვნების ლიმიტი"
−100 დროებითი შეფერხება — სცადე თავიდან
დაიწყე უფასოდ
ჩვენთან საუბარი
გიპასუხებთ მალე