Skip to content
Console

Announcements

ExpTech service announcements, the same content shown on the announcement site https://announcement.exptech.com.tw: service incidents, maintenance, updates, API changes, and similar notices. Only announcements that are published and not yet expired are returned. Use this to show ExpTech maintenance and incident status inside your own service.

  • ExpTech's own service notices. Credit ExpTech when you republish them.

Where to show it, examples and commercial-use requests: Data licensing and attribution.

No API Token is required right now.

All three endpoints return an announcement in this shape:

FieldTypeDescription
idintAnnouncement ID.
typeintAnnouncement type: 1 general, 2 incident, 4 maintenance, 8 update, 16 change.
titlestringTitle.
contentstringBody, in Markdown. It may contain the summary separator {/* truncate */}, which you can remove before display.
tagsstring[]Tags. Examples: an affected service (TREM Lite, DPIP, API(HTTP), …) or an impact level (無 none, 小 small, 中 medium, 大 large, 重大 major). Incident and maintenance announcements include either 進行中 (in progress) or 已結案 (closed).
statusintStatus. The public API returns only published announcements, so this is always 1.
expires_atstring | nullExpiry time, ISO 8601 UTC (for example 2026-11-20T00:00:00.000Z). null when it does not expire.
created_atstringCreated time, ISO 8601 UTC.
updated_atstringLast updated time, ISO 8601 UTC.

Newest created_at first, 50 per page. Only announcements that are published and not yet expired are included.

GEThttps://announcement.exptech.com.tw/api/announcements
ServerAnnouncement
Query parameters
  • pageintOptionalDefault 1

    Page number, starting at 1.

  • searchstringOptional

    Keyword, matched against the title, body, and tags (partial match, case-insensitive).

  • typeintOptional

    List only this type: 1 general, 2 incident, 4 maintenance, 8 update, 16 change. Only one type at a time.

Request
curl "https://announcement.exptech.com.tw/api/announcements"
Response

Success

{
"success": true,
"data": {
"announcements": [
{
"id": 42,
"type": 4,
"title": "API 伺服器例行維護",
"content": "11 月 20 日 02:00–04:00 進行例行維護,期間 API 可能短暫無法連線。",
"tags": [
"API(HTTP)",
"小",
"進行中"
],
"status": 1,
"expires_at": "2026-11-20T00:00:00.000Z",
"created_at": "2026-11-14T03:00:00.000Z",
"updated_at": "2026-11-14T03:00:00.000Z"
}
],
"total": 1,
"page": 1,
"totalPages": 1
}
}

If-None-Match matches the ETag. Empty bodyNo response body

Try it
Query parameters

The token is sent from your browser directly to the API.

FieldTypeDescription
successbooleantrue on success.
data.announcementsobject[]Announcements on this page. See Announcement object for the shape.
data.totalintTotal number of announcements that match.
data.pageintCurrent page number.
data.totalPagesintTotal number of pages (50 per page). 0 when there are no announcements.
GEThttps://announcement.exptech.com.tw/api/announcements/stats
ServerAnnouncement
Request
curl "https://announcement.exptech.com.tw/api/announcements/stats"
Response

Success

{
"success": true,
"data": {
"stats": {
"1": 12,
"4": 3,
"8": 20
}
}
}

If-None-Match matches the ETag. Empty bodyNo response body

Try it

The token is sent from your browser directly to the API.

FieldTypeDescription
data.statsobjectAnnouncement type → count of announcements that are published and not yet expired. The key is the type number as a string. A type with a count of 0 is omitted.
GEThttps://announcement.exptech.com.tw/api/announcements/{id}
ServerAnnouncement
Path parameters
  • idintRequired

    Announcement ID (path parameter).

Request
curl "https://announcement.exptech.com.tw/api/announcements/<id>"
Response

Success

{
"success": true,
"data": {
"announcement": {
"id": 42,
"type": 4,
"title": "API 伺服器例行維護",
"content": "11 月 20 日 02:00–04:00 進行例行維護,期間 API 可能短暫無法連線。",
"tags": [
"API(HTTP)",
"小",
"進行中"
],
"status": 1,
"expires_at": "2026-11-20T00:00:00.000Z",
"created_at": "2026-11-14T03:00:00.000Z",
"updated_at": "2026-11-14T03:00:00.000Z"
}
}
}

If-None-Match matches the ETag. Empty bodyNo response body

The announcement does not exist, or it is not published

{
"success": false,
"error": "找不到公告"
}
Try it
Path parameters

The token is sent from your browser directly to the API.

The shape of data.announcement is the announcement object.

  • Cache. The server caches for 10 seconds. The response includes ETag. The same If-None-Match returns 304.
  • Expired announcements. The list and the counts omit expired announcements. Fetching one by ID still returns it as long as it is still published.
  • Error format. An error response is {"success": false, "error": "<message>"}. An unknown path returns 404, and error is 找不到此路徑.
  • Time format. Time fields are ISO 8601 UTC strings (ending in Z). Convert them to Taiwan time for display.
  • Do not call this directly from a browser. See the CORS note above.