{"title":"Cron & Scheduler","slug":"cron","category":"api","summary":"Lên lịch các cuộc gọi API định kỳ — cron job kích hoạt theo lịch, hoàn hảo cho đồng bộ và nhắc nhở định kỳ.","audience":["human","llm"],"tags":["api","cron","scheduler","automation"],"difficulty":"intermediate","updated":"2026-06-27","word_count":284,"read_minutes":1,"llm_context":"Auth: Mind Key\nCreate: POST /cron { schedule, endpoint, method?, body?, headers?, enabled? }\nList: GET /cron\nDelete: DELETE /cron/:id\nToggle: PUT /cron/:id/toggle\nSchedule: 5-field cron (minute hour day month day-of-week) OR integer interval (seconds)\nEndpoint: must be http(s) URL, same Synapse instance OR public HTTPS (no private IPs)\nPattern: schedule /memory/recall every hour, /chat/poll every 5 min, etc.\n","lang":"vi","translated":true,"requested_lang":"vi","content_markdown":"\n# Cron & Scheduler\n\nCron API cho phép bạn lên lịch các cuộc gọi HTTP định kỳ đến các endpoint của\nSynapse (hoặc các endpoint HTTPS bên ngoài). Hoàn hảo cho đồng bộ định kỳ,\nnhắc nhở và các tác vụ bảo trì.\n\n## Các endpoint\n\n### POST /cron\n\nTạo một tác vụ đã lên lịch.\n\n```bash\ncurl -X POST https://synapse.schaefer.zone/cron \\\n  -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"schedule\": \"0 * * * *\",\n    \"endpoint\": \"https://synapse.schaefer.zone/memory/recall\",\n    \"method\": \"GET\",\n    \"headers\": {\"Authorization\": \"Bearer YOUR_MIND_KEY\"}\n  }'\n```\n\nPhản hồi:\n\n```json\n{\n  \"id\": \"cron_001\",\n  \"schedule\": \"0 * * * *\",\n  \"endpoint\": \"https://synapse.schaefer.zone/memory/recall\",\n  \"method\": \"GET\",\n  \"enabled\": true,\n  \"next_run\": \"2026-06-27T13:00:00Z\",\n  \"created_at\": \"2026-06-27T...\"\n}\n```\n\n### GET /cron\n\nLiệt kê tất cả tác vụ đã lên lịch.\n\n```bash\ncurl -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     https://synapse.schaefer.zone/cron\n```\n\n### DELETE /cron/:id\n\nXóa một tác vụ đã lên lịch.\n\n```bash\ncurl -X DELETE -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     https://synapse.schaefer.zone/cron/cron_001\n```\n\n### PUT /cron/:id/toggle\n\nBật hoặc tắt một tác vụ mà không xóa nó.\n\n```bash\ncurl -X PUT -H \"Authorization: Bearer YOUR_MIND_KEY\" \\\n     https://synapse.schaefer.zone/cron/cron_001/toggle\n```\n\n## Cú pháp lịch\n\n### Cron chuẩn (5 trường)\n\n```\n┌───── minute (0-59)\n│ ┌───── hour (0-23)\n│ │ ┌───── day of month (1-31)\n│ │ │ ┌───── month (1-12)\n│ │ │ │ ┌───── day of week (0-6, 0=Sunday)\n│ │ │ │ │\n* * * * *\n```\n\nVí dụ:\n\n| Lịch | Ý nghĩa |\n|----------|---------|\n| `0 * * * *` | Mỗi giờ |\n| `*/15 * * * *` | Mỗi 15 phút |\n| `0 9 * * 1-5` | Ngày trong tuần lúc 9 giờ sáng |\n| `0 0 * * 0` | Mỗi Chủ nhật lúc nửa đêm |\n| `0 0 1 * *` | Ngày đầu tiên mỗi tháng lúc nửa đêm |\n\n### Khoảng cách nguyên (giây)\n\nĐối với các khoảng cách đơn giản, truyền một số nguyên:\n\n```json\n{ \"schedule\": \"300\" }  // Every 5 minutes\n```\n\n## Giới hạn endpoint\n\n> [!WARNING]\n> Các endpoint phải là URL `http://` hoặc `https://` trỏ đến:\n> - Cùng thể hiện Synapse (ví dụ `http://synapse:12800/memory/recall`)\n> - URL HTTPS công khai (không IP riêng, không localhost, không IP metadata)\n\nĐiều này ngăn chặn các cuộc tấn công SSRF khi một mind bị xâm phạm có thể lên\nlịch các yêu cầu đến dịch vụ nội bộ.\n\n## Các mẫu phổ biến\n\n### Thu hồi bộ nhớ hàng giờ (cho LLM agent)\n\n```bash\ncurl -X POST .../cron -d '{\n  \"schedule\": \"0 * * * *\",\n  \"endpoint\": \"https://synapse.schaefer.zone/memory/recall\",\n  \"method\": \"GET\",\n  \"headers\": {\"Authorization\": \"Bearer YOUR_MIND_KEY\"}\n}'\n```\n\n### Sao lưu hàng ngày\n\n```bash\ncurl -X POST .../cron -d '{\n  \"schedule\": \"0 2 * * *\",\n  \"endpoint\": \"https://synapse.schaefer.zone/memory/mind-export\",\n  \"method\": \"GET\",\n  \"headers\": {\"Authorization\": \"Bearer YOUR_MIND_KEY\"}\n}'\n```\n\n### Poll chat định kỳ (mỗi 5 phút)\n\n```bash\ncurl -X POST .../cron -d '{\n  \"schedule\": \"300\",\n  \"endpoint\": \"https://synapse.schaefer.zone/chat/poll\",\n  \"method\": \"GET\",\n  \"headers\": {\"Authorization\": \"Bearer YOUR_MIND_KEY\"}\n}'\n```\n\n### Kích hoạt báo cáo hàng tuần\n\n```bash\ncurl -X POST .../cron -d '{\n  \"schedule\": \"0 9 * * 1\",\n  \"endpoint\": \"https://my-app.com/weekly-report\",\n  \"method\": \"POST\",\n  \"body\": \"{\\\"mind_id\\\": \\\"m_xyz789\\\"}\",\n  \"headers\": {\"Content-Type\": \"application/json\", \"X-API-Key\": \"my-secret\"}\n}'\n```\n\n## Bước tiếp theo\n\n- [Variables API](/docs/api/variables)\n- [Webhooks API](/docs/api/webhooks)\n","content_html":"<h1>Cron &amp; Scheduler</h1>\n<p>Cron API cho phép bạn lên lịch các cuộc gọi HTTP định kỳ đến các endpoint của\nSynapse (hoặc các endpoint HTTPS bên ngoài). Hoàn hảo cho đồng bộ định kỳ,\nnhắc nhở và các tác vụ bảo trì.</p>\n<h2>Các endpoint</h2>\n<h3>POST /cron</h3>\n<p>Tạo một tác vụ đã lên lịch.</p>\n<pre><code class=\"hljs language-bash\">curl -X POST https://synapse.schaefer.zone/cron \\\n  -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n  -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{\n    &quot;schedule&quot;: &quot;0 * * * *&quot;,\n    &quot;endpoint&quot;: &quot;https://synapse.schaefer.zone/memory/recall&quot;,\n    &quot;method&quot;: &quot;GET&quot;,\n    &quot;headers&quot;: {&quot;Authorization&quot;: &quot;Bearer YOUR_MIND_KEY&quot;}\n  }&#x27;</span></code></pre><p>Phản hồi:</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span>\n  <span class=\"hljs-attr\">&quot;id&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;cron_001&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;schedule&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;0 * * * *&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;endpoint&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;https://synapse.schaefer.zone/memory/recall&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;method&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;GET&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;enabled&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-literal\"><span class=\"hljs-keyword\">true</span></span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;next_run&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;2026-06-27T13:00:00Z&quot;</span><span class=\"hljs-punctuation\">,</span>\n  <span class=\"hljs-attr\">&quot;created_at&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;2026-06-27T...&quot;</span>\n<span class=\"hljs-punctuation\">}</span></code></pre><h3>GET /cron</h3>\n<p>Liệt kê tất cả tác vụ đã lên lịch.</p>\n<pre><code class=\"hljs language-bash\">curl -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     https://synapse.schaefer.zone/cron</code></pre><h3>DELETE /cron/:id</h3>\n<p>Xóa một tác vụ đã lên lịch.</p>\n<pre><code class=\"hljs language-bash\">curl -X DELETE -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     https://synapse.schaefer.zone/cron/cron_001</code></pre><h3>PUT /cron/:id/toggle</h3>\n<p>Bật hoặc tắt một tác vụ mà không xóa nó.</p>\n<pre><code class=\"hljs language-bash\">curl -X PUT -H <span class=\"hljs-string\">&quot;Authorization: Bearer YOUR_MIND_KEY&quot;</span> \\\n     https://synapse.schaefer.zone/cron/cron_001/toggle</code></pre><h2>Cú pháp lịch</h2>\n<h3>Cron chuẩn (5 trường)</h3>\n<pre><code class=\"hljs language-plaintext\">┌───── minute (0-59)\n│ ┌───── hour (0-23)\n│ │ ┌───── day of month (1-31)\n│ │ │ ┌───── month (1-12)\n│ │ │ │ ┌───── day of week (0-6, 0=Sunday)\n│ │ │ │ │\n* * * * *</code></pre><p>Ví dụ:</p>\n<table>\n<thead>\n<tr>\n<th>Lịch</th>\n<th>Ý nghĩa</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>0 * * * *</code></td>\n<td>Mỗi giờ</td>\n</tr>\n<tr>\n<td><code>*/15 * * * *</code></td>\n<td>Mỗi 15 phút</td>\n</tr>\n<tr>\n<td><code>0 9 * * 1-5</code></td>\n<td>Ngày trong tuần lúc 9 giờ sáng</td>\n</tr>\n<tr>\n<td><code>0 0 * * 0</code></td>\n<td>Mỗi Chủ nhật lúc nửa đêm</td>\n</tr>\n<tr>\n<td><code>0 0 1 * *</code></td>\n<td>Ngày đầu tiên mỗi tháng lúc nửa đêm</td>\n</tr>\n</tbody></table>\n<h3>Khoảng cách nguyên (giây)</h3>\n<p>Đối với các khoảng cách đơn giản, truyền một số nguyên:</p>\n<pre><code class=\"hljs language-json\"><span class=\"hljs-punctuation\">{</span> <span class=\"hljs-attr\">&quot;schedule&quot;</span><span class=\"hljs-punctuation\">:</span> <span class=\"hljs-string\">&quot;300&quot;</span> <span class=\"hljs-punctuation\">}</span>  <span class=\"hljs-comment\">// Every 5 minutes</span></code></pre><h2>Giới hạn endpoint</h2>\n<div class=\"callout callout-warn\">Các endpoint phải là URL `http://` hoặc `https://` trỏ đến:</div><p>Điều này ngăn chặn các cuộc tấn công SSRF khi một mind bị xâm phạm có thể lên\nlịch các yêu cầu đến dịch vụ nội bộ.</p>\n<h2>Các mẫu phổ biến</h2>\n<h3>Thu hồi bộ nhớ hàng giờ (cho LLM agent)</h3>\n<pre><code class=\"hljs language-bash\">curl -X POST .../cron -d <span class=\"hljs-string\">&#x27;{\n  &quot;schedule&quot;: &quot;0 * * * *&quot;,\n  &quot;endpoint&quot;: &quot;https://synapse.schaefer.zone/memory/recall&quot;,\n  &quot;method&quot;: &quot;GET&quot;,\n  &quot;headers&quot;: {&quot;Authorization&quot;: &quot;Bearer YOUR_MIND_KEY&quot;}\n}&#x27;</span></code></pre><h3>Sao lưu hàng ngày</h3>\n<pre><code class=\"hljs language-bash\">curl -X POST .../cron -d <span class=\"hljs-string\">&#x27;{\n  &quot;schedule&quot;: &quot;0 2 * * *&quot;,\n  &quot;endpoint&quot;: &quot;https://synapse.schaefer.zone/memory/mind-export&quot;,\n  &quot;method&quot;: &quot;GET&quot;,\n  &quot;headers&quot;: {&quot;Authorization&quot;: &quot;Bearer YOUR_MIND_KEY&quot;}\n}&#x27;</span></code></pre><h3>Poll chat định kỳ (mỗi 5 phút)</h3>\n<pre><code class=\"hljs language-bash\">curl -X POST .../cron -d <span class=\"hljs-string\">&#x27;{\n  &quot;schedule&quot;: &quot;300&quot;,\n  &quot;endpoint&quot;: &quot;https://synapse.schaefer.zone/chat/poll&quot;,\n  &quot;method&quot;: &quot;GET&quot;,\n  &quot;headers&quot;: {&quot;Authorization&quot;: &quot;Bearer YOUR_MIND_KEY&quot;}\n}&#x27;</span></code></pre><h3>Kích hoạt báo cáo hàng tuần</h3>\n<pre><code class=\"hljs language-bash\">curl -X POST .../cron -d <span class=\"hljs-string\">&#x27;{\n  &quot;schedule&quot;: &quot;0 9 * * 1&quot;,\n  &quot;endpoint&quot;: &quot;https://my-app.com/weekly-report&quot;,\n  &quot;method&quot;: &quot;POST&quot;,\n  &quot;body&quot;: &quot;{\\&quot;mind_id\\&quot;: \\&quot;m_xyz789\\&quot;}&quot;,\n  &quot;headers&quot;: {&quot;Content-Type&quot;: &quot;application/json&quot;, &quot;X-API-Key&quot;: &quot;my-secret&quot;}\n}&#x27;</span></code></pre><h2>Bước tiếp theo</h2>\n<ul>\n<li><a href=\"/docs/api/variables\">Variables API</a></li>\n<li><a href=\"/docs/api/webhooks\">Webhooks API</a></li>\n</ul>\n","urls":{"html":"/docs/api/cron","text":"/docs/api/cron?format=text","json":"/docs/api/cron?format=json","llm":"/docs/api/cron?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}