{"id":605,"date":"2025-09-02T11:26:26","date_gmt":"2025-09-02T11:26:26","guid":{"rendered":"https:\/\/1v0.net\/blog\/?p=605"},"modified":"2025-09-02T11:26:29","modified_gmt":"2025-09-02T11:26:29","slug":"how-to-schedule-jobs-in-laravel-with-task-scheduling","status":"publish","type":"post","link":"https:\/\/1v0.net\/blog\/how-to-schedule-jobs-in-laravel-with-task-scheduling\/","title":{"rendered":"How to Schedule Jobs in Laravel with Task Scheduling"},"content":{"rendered":"\n<p>Laravel\u2019s task scheduling system allows you to automate repetitive jobs such as clearing caches, sending out reports, or syncing data. Instead of creating multiple cron jobs on the server, you define all of your scheduled tasks in code and keep them version controlled. This makes it easier to manage and deploy automation tasks consistently.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Setting Up the Scheduler<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Bash\" data-shcb-language-slug=\"bash\"><span><code class=\"hljs language-bash\">* * * * * php \/path-to-your-app\/artisan schedule:run &gt;&gt; \/dev\/null 2&gt;&amp;1<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Bash<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">bash<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>You only need a single cron entry that runs Laravel\u2019s scheduler every minute. From there, Laravel decides which tasks need to execute. This approach keeps your automation clean and centralized inside your application.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Defining Scheduled Tasks<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ app\/Console\/Kernel.php<\/span>\n\n<span class=\"hljs-keyword\">protected<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">schedule<\/span><span class=\"hljs-params\">(Schedule $schedule)<\/span>\n<\/span>{\n    $schedule-&gt;command(<span class=\"hljs-string\">'emails:send'<\/span>)-&gt;dailyAt(<span class=\"hljs-string\">'09:00'<\/span>);\n    $schedule-&gt;job(<span class=\"hljs-keyword\">new<\/span> CleanUpTempFiles)-&gt;hourly();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>You define tasks inside <code>app\/Console\/Kernel.php<\/code> using the <code>schedule<\/code> method. You can schedule Artisan commands, queued jobs, or closures. Laravel provides methods like <code>dailyAt()<\/code>, <code>hourly()<\/code>, and <code>weeklyOn()<\/code> to customize when tasks run.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Different Frequency Options<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$schedule-&gt;command(<span class=\"hljs-string\">'cache:clear'<\/span>)-&gt;everyMinute();\n$schedule-&gt;command(<span class=\"hljs-string\">'backup:run'<\/span>)-&gt;twiceDaily(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">13<\/span>);\n$schedule-&gt;command(<span class=\"hljs-string\">'reports:send'<\/span>)-&gt;weeklyOn(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">'08:00'<\/span>); <span class=\"hljs-comment\">\/\/ Monday 8am<\/span>\n$schedule-&gt;command(<span class=\"hljs-string\">'cleanup:archive'<\/span>)-&gt;monthlyOn(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">'02:00'<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Laravel includes expressive frequency methods to fit your use case. You can schedule tasks every minute, twice daily, weekly on a specific day, or monthly at a given time.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Environment-Based Scheduling<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$schedule-&gt;command(<span class=\"hljs-string\">'emails:send'<\/span>)\n    -&gt;daily()\n    -&gt;environments(&#91;<span class=\"hljs-string\">'production'<\/span>]);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>You can restrict tasks to specific environments. For example, you may want to send emails only in production and skip them in your local or staging environments.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Output Logging<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$schedule-&gt;command(<span class=\"hljs-string\">'reports:generate'<\/span>)\n    -&gt;daily()\n    -&gt;appendOutputTo(storage_path(<span class=\"hljs-string\">'logs\/schedule.log'<\/span>));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>When running scheduled commands, capturing their output helps with debugging. Use <code>appendOutputTo()<\/code> or <code>sendOutputTo()<\/code> to direct the output to log files.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Practical Maintenance Tasks<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$schedule-&gt;command(<span class=\"hljs-string\">'model:prune'<\/span>)-&gt;daily();\n$schedule-&gt;command(<span class=\"hljs-string\">'cache:clear'<\/span>)-&gt;weekly();\n$schedule-&gt;command(<span class=\"hljs-string\">'db:backup'<\/span>)-&gt;dailyAt(<span class=\"hljs-string\">'01:00'<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Typical tasks include pruning old models, clearing caches, or running database backups. Automating these jobs improves reliability and reduces manual overhead.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Using Closures in Scheduling<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$schedule-&gt;call(<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">()<\/span> <\/span>{\n    \\Log::info(<span class=\"hljs-string\">'Scheduled closure executed at '<\/span> . now());\n})-&gt;everyFiveMinutes();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Closures let you define quick tasks inline without creating full commands. This is useful for logging, temporary cleanups, or testing scheduled execution.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Running Scheduled Events in the Background<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$schedule-&gt;command(<span class=\"hljs-string\">'reports:generate'<\/span>)\n    -&gt;dailyAt(<span class=\"hljs-string\">'23:00'<\/span>)\n    -&gt;withoutOverlapping()\n    -&gt;runInBackground();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><code>withoutOverlapping()<\/code> ensures that a job won\u2019t run again if the previous instance hasn\u2019t finished. Adding <code>runInBackground()<\/code> allows long-running tasks to execute without blocking others.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Building a UI to Track Completed Jobs<\/strong><\/h2>\n\n\n\n<p>Sometimes you need visibility into which scheduled tasks or queued jobs have already run. While Laravel Horizon provides a great dashboard, you can also build a lightweight UI yourself for audit and monitoring purposes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Migration: Job Runs Table<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ database\/migrations\/2025_09_02_000001_create_job_runs_table.php<\/span>\nSchema::create(<span class=\"hljs-string\">'job_runs'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">(Blueprint $table)<\/span> <\/span>{\n    $table-&gt;id();\n    $table-&gt;string(<span class=\"hljs-string\">'job_name'<\/span>);\n    $table-&gt;string(<span class=\"hljs-string\">'queue'<\/span>)-&gt;nullable();\n    $table-&gt;timestamp(<span class=\"hljs-string\">'started_at'<\/span>)-&gt;nullable();\n    $table-&gt;timestamp(<span class=\"hljs-string\">'finished_at'<\/span>)-&gt;nullable();\n    $table-&gt;unsignedInteger(<span class=\"hljs-string\">'duration_ms'<\/span>)-&gt;nullable();\n    $table-&gt;string(<span class=\"hljs-string\">'status'<\/span>); <span class=\"hljs-comment\">\/\/ success | failed<\/span>\n    $table-&gt;longText(<span class=\"hljs-string\">'exception'<\/span>)-&gt;nullable();\n    $table-&gt;timestamps();\n});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This table logs each executed job with status, duration, and exception details if applicable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Queue Events<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ app\/Providers\/EventServiceProvider.php<\/span>\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Support<\/span>\\<span class=\"hljs-title\">Facades<\/span>\\<span class=\"hljs-title\">Queue<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Queue<\/span>\\<span class=\"hljs-title\">Events<\/span>\\<span class=\"hljs-title\">JobProcessed<\/span>;\n<span class=\"hljs-keyword\">use<\/span> <span class=\"hljs-title\">Illuminate<\/span>\\<span class=\"hljs-title\">Queue<\/span>\\<span class=\"hljs-title\">Events<\/span>\\<span class=\"hljs-title\">JobFailed<\/span>;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">boot<\/span><span class=\"hljs-params\">()<\/span>: <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    Queue::after(<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">(JobProcessed $event)<\/span> <\/span>{\n        \\App\\Models\\JobRun::create(&#91;\n            <span class=\"hljs-string\">'job_name'<\/span> =&gt; $event-&gt;job-&gt;resolveName(),\n            <span class=\"hljs-string\">'status'<\/span> =&gt; <span class=\"hljs-string\">'success'<\/span>,\n            <span class=\"hljs-string\">'started_at'<\/span> =&gt; now()-&gt;subSeconds(<span class=\"hljs-number\">1<\/span>),\n            <span class=\"hljs-string\">'finished_at'<\/span> =&gt; now(),\n        ]);\n    });\n\n    Queue::failing(<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-params\">(JobFailed $event)<\/span> <\/span>{\n        \\App\\Models\\JobRun::create(&#91;\n            <span class=\"hljs-string\">'job_name'<\/span> =&gt; $event-&gt;job-&gt;resolveName(),\n            <span class=\"hljs-string\">'status'<\/span> =&gt; <span class=\"hljs-string\">'failed'<\/span>,\n            <span class=\"hljs-string\">'exception'<\/span> =&gt; $event-&gt;exception-&gt;getMessage(),\n        ]);\n    });\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here we listen to job lifecycle events and insert records into the <code>job_runs<\/code> table. You can enrich it with duration, queue name, or custom tags.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Blade UI Example<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ resources\/views\/job-runs\/index.blade.php<\/span>\n&lt;table <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span>=\"<span class=\"hljs-title\">table<\/span>-<span class=\"hljs-title\">auto<\/span> <span class=\"hljs-title\">w<\/span>-<span class=\"hljs-title\">full<\/span>\"&gt;\n  &lt;<span class=\"hljs-title\">thead<\/span>&gt;\n    &lt;<span class=\"hljs-title\">tr<\/span>&gt;\n      &lt;<span class=\"hljs-title\">th<\/span>&gt;<span class=\"hljs-title\">Job<\/span> <span class=\"hljs-title\">Name<\/span>&lt;\/<span class=\"hljs-title\">th<\/span>&gt;\n      &lt;<span class=\"hljs-title\">th<\/span>&gt;<span class=\"hljs-title\">Status<\/span>&lt;\/<span class=\"hljs-title\">th<\/span>&gt;\n      &lt;<span class=\"hljs-title\">th<\/span>&gt;<span class=\"hljs-title\">Started<\/span>&lt;\/<span class=\"hljs-title\">th<\/span>&gt;\n      &lt;<span class=\"hljs-title\">th<\/span>&gt;<span class=\"hljs-title\">Finished<\/span>&lt;\/<span class=\"hljs-title\">th<\/span>&gt;\n      &lt;<span class=\"hljs-title\">th<\/span>&gt;<span class=\"hljs-title\">Error<\/span>&lt;\/<span class=\"hljs-title\">th<\/span>&gt;\n    &lt;\/<span class=\"hljs-title\">tr<\/span>&gt;\n  &lt;\/<span class=\"hljs-title\">thead<\/span>&gt;\n  &lt;<span class=\"hljs-title\">tbody<\/span>&gt;\n    @<span class=\"hljs-title\">foreach<\/span>($<span class=\"hljs-title\">runs<\/span> <span class=\"hljs-title\">as<\/span> $<span class=\"hljs-title\">run<\/span>)\n    &lt;<span class=\"hljs-title\">tr<\/span>&gt;\n      &lt;<span class=\"hljs-title\">td<\/span>&gt;<\/span>{{ $run-&gt;job_name }}&lt;\/td&gt;\n      &lt;td&gt;{{ $run-&gt;status }}&lt;\/td&gt;\n      &lt;td&gt;{{ $run-&gt;started_at }}&lt;\/td&gt;\n      &lt;td&gt;{{ $run-&gt;finished_at }}&lt;\/td&gt;\n      &lt;td&gt;{{ $run-&gt;exception }}&lt;\/td&gt;\n    &lt;\/tr&gt;\n    @<span class=\"hljs-keyword\">endforeach<\/span>\n  &lt;\/tbody&gt;\n&lt;\/table&gt;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This Blade view lists job history, making it easy to monitor success\/failure patterns. You can add pagination, filtering, or search for larger datasets.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wrapping Up<\/strong><\/h2>\n\n\n\n<p>Laravel\u2019s scheduler streamlines automation by letting you manage all recurring jobs inside your codebase. With support for different frequencies, environment restrictions, logging, and background execution, you can cover almost any use case. For visibility, building a simple UI to list completed jobs ensures transparency and helps with debugging and auditing.<\/p>\n\n\n\n<div class=\"wp-block-spacer\" style=\"height:100px\" aria-hidden=\"true\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What\u2019s Next<\/strong><\/h2>\n\n\n\n<p>To keep building robust background processes and automation, explore these articles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"\/blog\/using-laravel-telescope-to-debug-performance-issues\">Using Laravel Telescope to Debug Performance Issues<\/a><\/li>\n<li><a href=\"\/blog\/laravel-horizon-vs-queue-workers-which-one-should-you-use\">Laravel Horizon vs Queue Workers: Which One Should You Use?<\/a><\/li>\n<li><a href=\"\/blog\/how-to-use-laravel-queues-for-faster-performance\">How to Use Laravel Queues for Faster Performance<\/a><\/li>\n<\/ul>\n\n","protected":false},"excerpt":{"rendered":"<p>Laravel\u2019s task scheduling system allows you to automate repetitive jobs such as clearing caches, sending out reports, or syncing data. Instead of creating multiple cron jobs on the server, you define all of your scheduled tasks in code and keep them version controlled. This makes it easier to manage and deploy automation tasks consistently. Setting [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":609,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[85,66,44,65],"class_list":["post-605","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-automation","tag-background-jobs","tag-performance","tag-queues"],"_links":{"self":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts\/605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/comments?post=605"}],"version-history":[{"count":1,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts\/605\/revisions"}],"predecessor-version":[{"id":608,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/posts\/605\/revisions\/608"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/media\/609"}],"wp:attachment":[{"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/media?parent=605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/categories?post=605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/1v0.net\/blog\/wp-json\/wp\/v2\/tags?post=605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}