APIアクセス
タイムスタンプの生成とアプリの設定の変更を自分のプログラムで行うための機能です。各アプリコマンドに対応するエンドポイントが提供されており、リクエストはキーを作成したDiscordアカウントの設定に従って処理されます。
タイムスタンプの生成とアプリの設定の変更を自分のプログラムで行うための機能です。各アプリコマンドに対応するエンドポイントが提供されており、リクエストはキーを作成したDiscordアカウントの設定に従って処理されます。
APIキーを作成するにはログインが必要です。キーはあなたのプロフィールにリンクした一つのDiscordアカウントとして機能します。
AuthorizationヘッダーにBearerトークンとしてキーを含めてリクエストを送信してください。
下記の例では、保存されたタイムゾーンにおける今日の18:30のタイムスタンプが返ります。例の中のキーは架空のものであり、実際にはご自身のキーを使用する必要があります。
curl https://api.hammertime.cyou/at \
-H "Authorization: Bearer 42|htk_qqXmIwpKxbAe3zYntwsLqK83wcKzbjD34M0yjsV9a698cb93" \
-H "Content-Type: application/json" \
-d '{"hour": 18, "minute": 30}'キーには作成時に付与された権限を保有しており、このページではこれ以降以下のコードによって各権限を表現します。
すべてのキーはGET/meを呼び出すことで自身の持つ権限を確認でき、これは権限に関係なく実行可能です。
| 権限 | 許可する内容 |
|---|---|
timestamps:create | タイムスタンプエンドポイントとMCPツールを用いたタイムスタンプの生成を可能にします。このときキーがDiscordアカウントとして機能し、生成はこのアカウントとして行われます。 |
settings:read | そのアカウントのアプリ設定の読み取りを可能にします。 |
settings:write | そのアカウントのアプリ設定の変更を可能にします。ここで、変更は送信されたフィールドにのみ適用されます。 |
リクエストにはキー単位で速度制限が適用されています。各レスポンスのRateLimitヘッダーでは現在の状態が、429レスポンスではRetry-Afterヘッダーが提供されます。
実行回数はアプリコマンドと同様に計上され、アプリの設定でテレメトリをオフにしていない限り、応答メッセージに何回目の実行であったかが表示されます。
全エンドポイントと、それぞれが要求するフィールド・与えるレスポンスの一覧です。これはAPIサーバーのOpenAPI仕様書から読みこまれているため、実行中のバージョンと常に一致しているはずです。
ベースURL
https://api.hammertime.cyouすべてのエラーは以下の形式の本文を持ちます。ステータスコードはエラーの種類を、error.code は具体的な理由を示します。
{"error": {object"code": "commands.at.responses.hourRange",stringMachine-readable reason. For rejected command input this is the bot's locale key, e.g. commands.at.responses.hourRange"message": "When a meridiem is not specified, hour must be a number between 0 and 23",stringEnglish explanation, the same text the Discord bot replies with"params": {},object任意Values interpolated into the message"issues": [object[]任意For invalid_request: what is wrong with which field{"path": "string",string"message": "string"string}]}}Bot commands as endpoints
Equivalent to the bot's /add command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"to": 0,numberThe UNIX timestamp in seconds"years": 1,integer任意min 1How many years to add to the specified timestamp"months": 1,integer任意min 1How many months to add to the specified timestamp"days": 1,integer任意min 1How many days to add to the specified timestamp"hours": 1,integer任意min 1How many hours to add to the specified timestamp"minutes": 1,integer任意min 1How many minutes to add to the specified timestamp"seconds": 0.001,number任意min 0.001How many seconds to add to the specified timestamp"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /ago command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"years": 1,integer任意min 1How many years to subtract from the current time"months": 1,integer任意min 1How many months to subtract from the current time"days": 1,integer任意min 1How many days to subtract from the current time"hours": 1,integer任意min 1How many hours to subtract from the current time"minutes": 1,integer任意min 1How many minutes to subtract from the current time"seconds": 0.001,number任意min 0.001How many seconds to subtract from the current time"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /at command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"year": 0,integer任意Specify the year (defaults to current year)"month": 1,integer任意min 1, max 12Specify the month (defaults to current month)"day": 1,integer任意min 1, max 31Specify the day (defaults to current day)"hour": "string",string | number任意Specify the hour (defaults to current hour). A plain number is accepted and read as text."hour12": 1,integer任意min 1, max 12Specify the hour using 12-hour clock (defaults to current hour)"am": false,boolean任意When True, hour must be between 1 to 12 and will be interpreted as AM (ante meridiem)"pm": false,boolean任意When True, hour must be between 1 to 12 and will be interpreted as PM (post meridiem)"minute": 0,integer任意min 0, max 59Specify the minute (defaults to current minute)"second": 0,number任意min 0, max 59.999Specify the second (defaults to 0)"timezone": "string",string任意min length 3Specify the timezone (defaults to GMT)"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /at12 command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"year": 0,integer任意Specify the year (defaults to current year)"month": 1,integer任意min 1, max 12Specify the month (defaults to current month)"day": 1,integer任意min 1, max 31Specify the day (defaults to current day)"hour": 1,integer任意min 1, max 12Specify the hour (defaults to current hour)"am": false,boolean任意When True, hour will be interpreted as am (ante meridiem, before noon)"pm": false,boolean任意When True, hour will be interpreted as pm (post meridiem, after noon)"minute": 0,integer任意min 0, max 59Specify the minute (defaults to current minute)"second": 0,number任意min 0, max 59.999Specify the second (defaults to 0)"timezone": "string",string任意min length 3Specify the timezone (defaults to GMT)"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /in command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"years": 1,integer任意min 1How many years to add to the current time"months": 1,integer任意min 1How many months to add to the current time"days": 1,integer任意min 1How many days to add to the current time"hours": 1,integer任意min 1How many hours to add to the current time"minutes": 1,integer任意min 1How many minutes to add to the current time"seconds": 0.001,number任意min 0.001How many seconds to add to the current time"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /iso command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"value": "string",stringmin length 10, max length 25The ISO 8601 standard timestamp"timezone": "string",string任意min length 3Specify the timezone (defaults to GMT)"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /snowflake command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"value": "string",stringmin length 1The Snowflake number"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /subtract command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"from": 0,numberThe UNIX timestamp in seconds"years": 1,integer任意min 1How many years to subtract from the specified timestamp"months": 1,integer任意min 1How many months to subtract from the specified timestamp"days": 1,integer任意min 1How many days to subtract from the specified timestamp"hours": 1,integer任意min 1How many hours to subtract from the specified timestamp"minutes": 1,integer任意min 1How many minutes to subtract from the specified timestamp"seconds": 0.001,number任意min 0.001How many seconds to subtract from the specified timestamp"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}Equivalent to the bot's /unix command: the same options, and any option left out falls back to the account's saved settings.
必要な権限timestamps:create{"value": 0,integerThe UNIX timestamp in seconds"format": "d",string任意Returns only the specified format in the response(d (short date), f (date and time), t (short time), D (long date), F (weekday, date and time), s (short date and short time), S (short date and long time), R (relative), T (long time), all (all (default)))"header": false,boolean任意Display the initial time (as interpreted by the bot) on top of the response"columns": "both",string任意Specify which columns to display in the returned response(both (both syntax and preview), preview (preview only), syntax (syntax only))"ephemeral": falseboolean任意When true the response will only be visible to you}{"command": "at",string(add, ago, at, at12, in, iso, snowflake, subtract, unix)"unix": 1792773000,integerUNIX timestamp in seconds"timezone": "Europe/Budapest",string | nullThe timezone the input was interpreted in, null for commands that have none"header": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest",string | nullThe exact time as interpreted, null when the header is turned off"content": "📅 2026-10-23 • 🕕 18:30:00 • 🌐 Europe/Budapest\n`<t:1792773000:d>` → **<t:1792773000:d>**\n`<t:1792773000:R>` → **<t:1792773000:R>**",stringThe reply the bot would send: the optional header and the syntax/preview rows"singleFormat": null,string | nullThe one format that was asked for (by option or setting), null when every format is listed"minimalReply": false,booleanTrue when only the preview of a single format is meant to be shown, which the formatMinimalReply setting asks for"usingAtHoursOnly": true,boolean任意Only for at: the hour was given as a bare 24-hour value, which the at12 command or a meridiem makes unambiguous"formats": [object[]{"format": "d",stringDiscord timestamp style (d, D, t, T, f, F, s, S or R)"timestamp": "<t:1792773000:d>"stringMarkdown to paste into Discord, e.g. <t:1650802953:R>}],"telemetry": {object任意Present only when usage telemetry is enabled in the settings of the account the key acts as"executionNumber": 1234,integerHow many times the command has been run, across Discord and the API"command": "at",string"privacyPolicyUrl": "https://hammertime.cyou/en/legal#telemetry-statistics",string"note": "This is execution #1234 for the /at command (since we started counting). Thank you for contributing telemetry data, which helps the bot's future development."stringThe sentence the bot appends to its replies}}The bot settings of the account
The saved settings of the account the key acts as. These are the defaults the timestamp endpoints fall back to.
必要な権限settings:read{"ephemeral": true,boolean | nullWhether the bot replies are only visible to you (no effect on the API)"timezone": "Europe/Budapest",string | nullTimezone used when a command does not specify one"header": true,boolean | nullWhether replies start with the exact time as interpreted"boldPreview": true,boolean | nullWhether previews are bold when listing all formats"columns": null,string | nullWhich columns replies show(both, preview, syntax)"format": null,string | nullOnly return this format instead of all of them(d, D, t, T, f, F, s, S, R)"formatMinimalReply": true,boolean | nullWith a single format, reply with just the preview"telemetry": true,boolean | nullWhether anonymous command usage is recorded, and the run count shown in replies"defaultAtHour": null,integer | nullHour (0-23) used by the at command when none is given"defaultAt12Hour": null,integer | nullHour (1-12) used by the at12 and at commands when none is given"defaultAtMinute": null,integer | nullMinute used by the at commands when none is given"defaultAtSecond": 0integer | nullSecond used by the at commands when none is given}Changes the given settings only. A null value resets a setting to its default.
必要な権限settings:write{"ephemeral": false,boolean | null任意"timezone": "string",string | null任意min length 1, max length 64"header": false,boolean | null任意"boldPreview": false,boolean | null任意"columns": "both",string | null任意(both, preview, syntax)"format": "d",string | null任意(d, D, t, T, f, F, s, S, R)"formatMinimalReply": false,boolean | null任意"telemetry": false,boolean | null任意"defaultAtHour": 0,integer | null任意min 0, max 23"defaultAt12Hour": 1,integer | null任意min 1, max 12"defaultAtMinute": 0,integer | null任意min 0, max 59"defaultAtSecond": 0integer | null任意min 0, max 59}{"ephemeral": true,boolean | nullWhether the bot replies are only visible to you (no effect on the API)"timezone": "Europe/Budapest",string | nullTimezone used when a command does not specify one"header": true,boolean | nullWhether replies start with the exact time as interpreted"boldPreview": true,boolean | nullWhether previews are bold when listing all formats"columns": null,string | nullWhich columns replies show(both, preview, syntax)"format": null,string | nullOnly return this format instead of all of them(d, D, t, T, f, F, s, S, R)"formatMinimalReply": true,boolean | nullWith a single format, reply with just the preview"telemetry": true,boolean | nullWhether anonymous command usage is recorded, and the run count shown in replies"defaultAtHour": null,integer | nullHour (0-23) used by the at command when none is given"defaultAt12Hour": null,integer | nullHour (1-12) used by the at12 and at commands when none is given"defaultAtMinute": null,integer | nullMinute used by the at commands when none is given"defaultAtSecond": 0integer | nullSecond used by the at commands when none is given}About the API key in use
Which account the key acts as and what it is allowed to do.
任意の有効なキーで利用可能{"keyId": "42",string"kind": "user",string(user, service)"discordUserId": "140360880079503362",stringThe Discord account the key acts as"scopes": ["timestamps:create","settings:read","settings:write"]string[]}Service status
Whether the service is up.
キー無しで利用可能{"status": "ok"string(ok)}MCPサーバーではStreamable HTTPトランスポートおよび共通のキーを使用します。コマンドごとに一つのツールと設定が提供され、キーの権限で許可されているツールのみが利用可能です。
サーバーURL
https://api.hammertime.cyou/mcpClaude Codeに追加するコマンドの例:
claude mcp add --transport http hammertime https://api.hammertime.cyou/mcp \
--header "Authorization: Bearer 42|htk_qqXmIwpKxbAe3zYntwsLqK83wcKzbjD34M0yjsV9a698cb93"その他のクライアントも同様の構成を使用しており、以下の形式のURLとAuthorizationヘッダーを使用しています。
{
"mcpServers": {
"hammertime": {
"type": "http",
"url": "https://api.hammertime.cyou/mcp",
"headers": {
"Authorization": "Bearer 42|htk_qqXmIwpKxbAe3zYntwsLqK83wcKzbjD34M0yjsV9a698cb93"
}
}
}
}