Scheduling an Alimtalk or SMS — scheduleType and at

Scheduling an Alimtalk or SMS — scheduleType and at

Send at a specific time with scheduleType SCHEDULED. Timestamp format, the KST timezone trap, and how scheduling interacts with the advertising night ban.

POST /api/v2/notices/send

To send at a specific time, set scheduleType to SCHEDULED and put the time in at. The default is DIRECTLY.

Format

Field Value
scheduleType "SCHEDULED"
at "2026-09-01 09:00:00"Y-m-d H:i:s, Korea Standard Time

ISO 8601 (2026-09-01T09:00:00Z) and Unix timestamps are not accepted.

Examples

Node.js / TypeScript

await sendgo.alimtalk.send({
  templateCode: 'PROMO_SUMMER_2026',
  scheduleType: 'SCHEDULED',
  at: '2026-09-01 09:00:00',
  contacts: [{ contact: '01012345678', var1: 'Autumn 30% off' }],
});

Python

client.alimtalk.send(
    template_code="PROMO_SUMMER_2026",
    schedule_type="SCHEDULED",
    at="2026-09-01 09:00:00",
    contacts=[{"contact": "01012345678", "var1": "Autumn 30% off"}],
)

PHP · Laravel

<?php

$sendgo->alimtalk->send([
    'templateCode' => 'PROMO_SUMMER_2026',
    'scheduleType' => 'SCHEDULED',
    'at'           => '2026-09-01 09:00:00',
    'contacts'     => [['contact' => '01012345678', 'var1' => 'Autumn 30% off']],
]);

Scheduling a text message

The same fields apply.

curl -X POST https://sendgo.io/api/v2/messages/send \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "campaignType": "MESSAGE",
    "messageType": "LMS",
    "scheduleType": "SCHEDULED",
    "at": "2026-09-01 09:00:00",
    "subject": "[Notice] Scheduled maintenance",
    "content": "Maintenance on 1 Sep, 02:00-06:00 KST.",
    "contacts": [{ "contact": "01012345678" }],
    "senderKey": "your_sms_sender_key"
  }'

The timezone trap

Servers commonly run in UTC — Docker containers, default AWS setups. Check that whatever builds the timestamp uses KST. A UTC time passed straight through sends nine hours early.

<?php

// Wrong — on a UTC server this actually means 18:00 KST.
'at' => now()->addDay()->setTime(9, 0)->format('Y-m-d H:i:s'),

// Right
'at' => now('Asia/Seoul')->addDay()->setTime(9, 0)->format('Y-m-d H:i:s'),
from datetime import datetime
from zoneinfo import ZoneInfo

at = datetime.now(ZoneInfo("Asia/Seoul")).replace(hour=9, minute=0, second=0)
client.alimtalk.send(
    template_code="PROMO_001",
    schedule_type="SCHEDULED",
    at=at.strftime("%Y-%m-%d %H:%M:%S"),
    contacts=[...],
)
// Format explicitly in KST rather than trusting the server's zone.
const at = new Intl.DateTimeFormat('sv-SE', {
  timeZone: 'Asia/Seoul',
  year: 'numeric', month: '2-digit', day: '2-digit',
  hour: '2-digit', minute: '2-digit', second: '2-digit',
  hour12: false,
}).format(target).replace('T', ' ');

Interaction with the night ban

Promotional messages cannot be delivered between 21:00 and 08:00 KST, judged on the actual send time. Do not schedule into that window.

The combination that bites: an evening batch that computes "three hours from now" can land inside the restricted window depending on when it ran. Use absolute times, or push into the next morning.

<?php

$at = now('Asia/Seoul')->addHours(3);

// Inside 21:00-08:00? Move it to the next morning.
if ($at->hour >= 21 || $at->hour < 8) {
    $at = $at->copy()->addDay()->setTime(8, 0);
}

Full rules: Advertising message rules.

Next

자주 묻는 질문

What format does the scheduled time use?
A Y-m-d H:i:s string, for example 2026-09-01 09:00:00. Not ISO 8601 and not a Unix timestamp.
Can I cancel a scheduled send?
Yes. Scheduled items that have not run yet can be found and cancelled in the console's send history.
What timezone is the scheduled time in?
Korea Standard Time (KST, UTC+9). If your server runs in UTC, convert before sending — passing a UTC timestamp puts the send nine hours early.
Does the advertising night ban apply to scheduled sends?
Yes, based on when the message actually goes out. Promotional messages cannot be delivered between 21:00 and 08:00 KST, so do not schedule into that window.

이 문서에서 쓰는 패키지

관련 문서