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/sendTo 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.