<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Khairul Muhtadin</title>
    <description>The latest articles on DEV Community by Khairul Muhtadin (@khmuhtadin).</description>
    <link>https://dev.to/khmuhtadin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3796665%2F6f5c9229-982f-48e5-8082-05353adb9bee.png</url>
      <title>DEV Community: Khairul Muhtadin</title>
      <link>https://dev.to/khmuhtadin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khmuhtadin"/>
    <language>en</language>
    <item>
      <title>APIs in production (rate limits, retries, Arc A milestone)</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Tue, 04 Aug 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/apis-in-production-rate-limits-retries-arc-a-milestone-3a8l</link>
      <guid>https://dev.to/khmuhtadin/apis-in-production-rate-limits-retries-arc-a-milestone-3a8l</guid>
      <description>&lt;p&gt;Connecting an API in the editor is easy.&lt;/p&gt;

&lt;p&gt;Surviving rate limits, expired tokens, and retries is the real skill.&lt;/p&gt;

&lt;p&gt;Swipe for batch+wait patterns, idempotent upserts, and an Arc A milestone check.&lt;/p&gt;

&lt;p&gt;Would your flakiest integration survive a token refresh right now?&lt;/p&gt;

&lt;p&gt;Episode 10 of Ship with n8n: 20 builder skills.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>Build n8n Workflows with Indonesian Public Data Using the API Indonesia Community Node</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Fri, 24 Jul 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/build-n8n-workflows-with-indonesian-public-data-using-the-api-indonesia-community-node-e63</link>
      <guid>https://dev.to/khmuhtadin/build-n8n-workflows-with-indonesian-public-data-using-the-api-indonesia-community-node-e63</guid>
      <description>&lt;h1&gt;
  
  
  Build n8n Workflows with Indonesian Public Data Using the API Indonesia Community Node
&lt;/h1&gt;

&lt;p&gt;Using an API in n8n is easy. Rebuilding the same HTTP Request setup for every workflow is the repetitive part: URLs, headers, API keys, parameters, and response mapping.&lt;br&gt;
The API Indonesia community node packages that work into a native n8n node. Instead of starting from a generic HTTP Request node, you select a resource and operation, configure its fields, and continue building your workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the node supports
&lt;/h2&gt;

&lt;p&gt;The node exposes Indonesian public-data resources such as administrative regions, prayer times, earthquakes, weather, exchange rates, public holidays, postal codes, schools, universities, and hospitals.&lt;br&gt;
It also includes Quran, Bible, KBBI, vehicle plates, minimum wages, halal certification, BPOM products, Hijri calendar data, astronomy, OJK investment products, early warnings, Bank Indonesia exchange rates, validators, and utility endpoints.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install the community node
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open n8n.&lt;/li&gt;
&lt;li&gt;Go to Settings, then Community Nodes.&lt;/li&gt;
&lt;li&gt;Select Install.&lt;/li&gt;
&lt;li&gt;Enter n8n-nodes-api-indonesia.
After installation, search for &lt;strong&gt;API Indonesia&lt;/strong&gt; when adding a node to a workflow.
## Create credentials once
Open the API Indonesia dashboard and create or copy an API key. Then, in n8n, create a credential of type &lt;strong&gt;API Indonesia API&lt;/strong&gt; and paste the key. Production keys start with aip_live_.
The default base URL is &lt;a href="https://use.apiindonesia.id" rel="noopener noreferrer"&gt;https://use.apiindonesia.id&lt;/a&gt;. You only need to change it when working against a development or staging environment.
## Example: retrieve the latest earthquakes
A minimal workflow can be:
&lt;strong&gt;Manual Trigger → API Indonesia → next action&lt;/strong&gt;
In the API Indonesia node, choose the &lt;strong&gt;Gempa&lt;/strong&gt; resource and the operation for the latest earthquakes. The node returns the latest records, ready to send to a chat alert, database, dashboard, or a filtering step.
That is the important difference from a demo-only integration: the node output is normal n8n data, so it can continue through the same workflow patterns you already use.
## Where this is useful
Use it when a workflow needs Indonesian public data without manually recreating a request every time. Examples include daily prayer-time notifications, earthquake alerts, regional onboarding forms, weather-aware operations, halal product discovery, and enrichment flows for education or healthcare data.
Start small. Pick one resource, run it from a Manual Trigger, inspect the output, then connect it to the next useful action.
## Resources
Community node package: &lt;a href="https://www.npmjs.com/package/n8n-nodes-api-indonesia" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/n8n-nodes-api-indonesia&lt;/a&gt;
API documentation: &lt;a href="https://docs.apiindonesia.id/" rel="noopener noreferrer"&gt;https://docs.apiindonesia.id/&lt;/a&gt;
API key dashboard: &lt;a href="https://dashboard.apiindonesia.id/" rel="noopener noreferrer"&gt;https://dashboard.apiindonesia.id/&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>automation</category>
      <category>api</category>
      <category>tutorial</category>
      <category>showdev</category>
    </item>
    <item>
      <title>API Indonesia is now available on RapidAPI</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Mon, 20 Jul 2026 11:00:00 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/api-indonesia-is-now-available-on-rapidapi-5a9d</link>
      <guid>https://dev.to/khmuhtadin/api-indonesia-is-now-available-on-rapidapi-5a9d</guid>
      <description>&lt;p&gt;API Indonesia is now available on RapidAPI.&lt;br&gt;
If you prefer discovering and testing APIs through a marketplace workflow, you can explore it there. The listing covers Indonesian public data endpoints such as regions, postal codes, public holidays, prayer times, earthquakes, exchange rates, and format validation utilities.&lt;br&gt;
If you prefer the full self-serve path, the main site and docs remain the primary entry points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apiindonesia.id/" rel="noopener noreferrer"&gt;https://apiindonesia.id/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.apiindonesia.id/" rel="noopener noreferrer"&gt;https://docs.apiindonesia.id/&lt;/a&gt;
RapidAPI listing:
&lt;a href="https://rapidapi.com/contactmuhtadin/api/api-indonesia" rel="noopener noreferrer"&gt;https://rapidapi.com/contactmuhtadin/api/api-indonesia&lt;/a&gt;
This is a distribution update. Existing production base URL and API keys on the main platform stay the same.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>indonesia</category>
      <category>tools</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Per-product landing pages for API Indonesia</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Fri, 17 Jul 2026 03:45:37 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/per-product-landing-pages-for-api-indonesia-53ko</link>
      <guid>https://dev.to/khmuhtadin/per-product-landing-pages-for-api-indonesia-53ko</guid>
      <description>&lt;p&gt;API Indonesia now has a product catalog and per-API landing pages.&lt;/p&gt;

&lt;p&gt;Instead of forcing every visitor straight into a long docs page, each dataset has its own page under /produk. There are Indonesian and English versions.&lt;/p&gt;

&lt;p&gt;Coverage snapshot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;23+ API products&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;280K+ data records&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regions, weather, Bank Indonesia rates, validation, halal, BPOM, Hijri calendar, schools, earthquakes, and more&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What this is for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;discover which public datasets exist&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;understand use cases before reading the full reference&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;jump into the right docs section faster&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Catalog:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apiindonesia.id/produk/" rel="noopener noreferrer"&gt;https://apiindonesia.id/produk/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apiindonesia.id/produk/wilayah" rel="noopener noreferrer"&gt;https://apiindonesia.id/produk/wilayah&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a discovery and onboarding update. It does not change the production API base URL or existing API keys.&lt;/p&gt;

</description>
      <category>api</category>
      <category>indonesia</category>
      <category>documentation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Try API Indonesia endpoints from the docs</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Thu, 16 Jul 2026 11:00:01 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/try-api-indonesia-endpoints-from-the-docs-15bn</link>
      <guid>https://dev.to/khmuhtadin/try-api-indonesia-endpoints-from-the-docs-15bn</guid>
      <description>&lt;p&gt;API Indonesia docs now include an interactive Try It Out console.&lt;br&gt;
You can test endpoints directly in the browser with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API key&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;li&gt;query params&lt;/li&gt;
&lt;li&gt;path params&lt;/li&gt;
&lt;li&gt;JSON body
This is meant to reduce setup friction. You do not need to open Postman just to see what an endpoint returns.
Docs:
&lt;a href="https://docs.apiindonesia.id/" rel="noopener noreferrer"&gt;https://docs.apiindonesia.id/&lt;/a&gt;
This is a developer experience update. It does not change the production base URL or existing API keys.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>documentation</category>
      <category>indonesia</category>
      <category>tools</category>
    </item>
    <item>
      <title>Agentic Is Powerful. The Bill Is in the Tokens.</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Wed, 15 Jul 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/agentic-is-powerful-the-bill-is-in-the-tokens-48l3</link>
      <guid>https://dev.to/khmuhtadin/agentic-is-powerful-the-bill-is-in-the-tokens-48l3</guid>
      <description>&lt;p&gt;Agentic workflows are useful. The problem is how fast tokens pile up.&lt;/p&gt;

&lt;p&gt;A single do this can turn into dozens of model calls. Context grows every turn. Retries get more expensive late in the session. Even simple search and re-read loops show up on the bill.&lt;/p&gt;

&lt;p&gt;That is token addiction: wrapping deterministic work in an LLM every time.&lt;/p&gt;

&lt;p&gt;Why agentic cost escalates&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Multi-step agent loops turn one goal into many model rounds.&lt;/li&gt;
&lt;li&gt;Input context dominates. Files, logs, and tool schemas get re-sent every turn.&lt;/li&gt;
&lt;li&gt;Retries late in a session hit a fat context window, so each attempt costs more than the last.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What token addiction looks like&lt;/p&gt;

&lt;p&gt;Agent greps the same repo on every run&lt;br&gt;
LLM summarizes JSON that a Set node or script could map&lt;br&gt;
Full HTML dumped into context instead of structured fields&lt;br&gt;
No max steps on tool loops&lt;/p&gt;

&lt;p&gt;You are paying for judgment on work that never needed judgment.&lt;/p&gt;

&lt;p&gt;A simple control plane&lt;/p&gt;

&lt;p&gt;With a clear process, n8n helps you decide when AI should run:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rules first for structured data, clear if/then paths, and high-volume glue.&lt;/li&gt;
&lt;li&gt;One-shot AI when the task is fuzzy but bounded: classify, extract, draft once.&lt;/li&gt;
&lt;li&gt;A full agent only when the path is truly unknown, with a budget and a kill switch.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use AI for judgment. Use workflows for everything else.&lt;/p&gt;

&lt;p&gt;Autonomy without routing is just an expensive loop.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>productivity</category>
      <category>agents</category>
    </item>
    <item>
      <title>Ship with n8n: 20 builder skills</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Tue, 14 Jul 2026 11:00:04 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/ship-with-n8n-20-builder-skills-3ak0</link>
      <guid>https://dev.to/khmuhtadin/ship-with-n8n-20-builder-skills-3ak0</guid>
      <description>&lt;p&gt;Ship with n8n: 20 builder skills.&lt;/p&gt;

&lt;p&gt;From a working canvas to systems you can trust in production.&lt;/p&gt;

&lt;p&gt;We do not start with agents. We start with control:&lt;br&gt;
• how runs start and how items move&lt;br&gt;
• JSON, HTTP, and readable design&lt;br&gt;
• failures, branches, and secrets&lt;br&gt;
• then models, databases, hosting, and full systems&lt;/p&gt;

&lt;p&gt;Three arcs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Canvas &amp;amp; data (01–10)&lt;/li&gt;
&lt;li&gt;Control &amp;amp; safety (11–15)&lt;/li&gt;
&lt;li&gt;Operate &amp;amp; scale (16–20)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Save this map. We go one skill per episode.&lt;/p&gt;

&lt;p&gt;Next: 01 · What n8n is for.&lt;/p&gt;

&lt;p&gt;Which skill do you want first after the fundamentals?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arc A · Canvas &amp;amp; data&lt;/strong&gt;&lt;br&gt;
01 What n8n is for · 02 Nodes as units of work · 03 Readable workflow design · 04 How a run starts · 05 Webhooks that are safe · 06 How items move · 07 Expressions without fear · 08 JSON you can debug · 09 HTTP as universal adapter · 10 APIs in production&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arc B · Control &amp;amp; safety&lt;/strong&gt;&lt;br&gt;
11 Failure paths on purpose · 12 Branching without spaghetti · 13 Batches, waits, and exits · 14 Transform without overkill · 15 Secrets out of the canvas&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arc C · Operate &amp;amp; scale&lt;/strong&gt;&lt;br&gt;
16 Agents only when needed · 17 One-shot models in a flow · 18 A real source of truth · 19 Own the stack · 20 Systems, not single flows&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>20 n8n skills that actually matter in production</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Tue, 14 Jul 2026 11:00:03 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/20-n8n-skills-that-actually-matter-in-production-1i0k</link>
      <guid>https://dev.to/khmuhtadin/20-n8n-skills-that-actually-matter-in-production-1i0k</guid>
      <description>&lt;p&gt;20 n8n skills that actually matter in production.&lt;/p&gt;

&lt;p&gt;Not a random tip list. This is the order I use so workflows do not only work in a demo.&lt;/p&gt;

&lt;p&gt;We do not start with agents.&lt;/p&gt;

&lt;p&gt;We start with control:&lt;/p&gt;

&lt;p&gt;• how a run starts&lt;/p&gt;

&lt;p&gt;• how items move between nodes&lt;/p&gt;

&lt;p&gt;• JSON, HTTP, readable design&lt;/p&gt;

&lt;p&gt;• errors and secrets, then models and full systems&lt;/p&gt;

&lt;p&gt;I split it into 3 arcs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Canvas and data (01–10)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Control and safety (11–15)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Operate and scale (16–20)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Arc A · Canvas and data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;01 What n8n is for · 02 Nodes as units of work · 03 Readable workflow design · 04 How a run starts · 05 Webhooks that are safe · 06 How items move · 07 Expressions without fear · 08 JSON you can debug · 09 HTTP as universal adapter · 10 APIs in production&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arc B · Control and safety&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;11 Failure paths on purpose · 12 Branching without spaghetti · 13 Batches, waits, and exits · 14 Transform without overkill · 15 Secrets out of the canvas&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arc C · Operate and scale&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;16 Agents only when needed · 17 One-shot models in a flow · 18 A real source of truth · 19 Own the stack · 20 Systems, not single flows&lt;/p&gt;

&lt;p&gt;One skill per episode: common mistake, checklist, small build.&lt;/p&gt;

&lt;p&gt;Next: 01 · What n8n is for.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>API Indonesia now ships an OpenAPI 3.1 spec</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Mon, 13 Jul 2026 12:39:00 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/api-indonesia-now-ships-an-openapi-31-spec-4m53</link>
      <guid>https://dev.to/khmuhtadin/api-indonesia-now-ships-an-openapi-31-spec-4m53</guid>
      <description>&lt;p&gt;I just published an OpenAPI 3.1 spec for API Indonesia.&lt;br&gt;
If you are integrating Indonesian public data, you no longer need to rebuild the request surface by hand from scattered docs.&lt;br&gt;
What is live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official OpenAPI 3.1 document&lt;/li&gt;
&lt;li&gt;80 operations&lt;/li&gt;
&lt;li&gt;Ready to import into Postman, Insomnia, Bruno, or client generators
Spec:
&lt;a href="https://docs.apiindonesia.id/openapi.json" rel="noopener noreferrer"&gt;https://docs.apiindonesia.id/openapi.json&lt;/a&gt;
Full docs:
&lt;a href="https://docs.apiindonesia.id/" rel="noopener noreferrer"&gt;https://docs.apiindonesia.id/&lt;/a&gt;
This update is about developer experience, not a breaking API change. Existing base URL and API keys stay the same.
If you prefer starting from a machine-readable contract, import the spec first, then explore the docs.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>openapi</category>
      <category>indonesia</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Agentcash is giving away $𝟭𝟬𝟬,𝟬𝟬𝟬 𝘁𝗼 𝘂𝘀𝗲𝗿𝘀.</title>
      <dc:creator>Khairul Muhtadin</dc:creator>
      <pubDate>Thu, 12 Mar 2026 11:17:07 +0000</pubDate>
      <link>https://dev.to/khmuhtadin/agentcash-is-giving-away--1b6p</link>
      <guid>https://dev.to/khmuhtadin/agentcash-is-giving-away--1b6p</guid>
      <description>&lt;p&gt;Agentcash is giving away &lt;strong&gt;$100,000 to users&lt;/strong&gt;.&lt;br&gt;
Just &lt;strong&gt;connect your GitHub account&lt;/strong&gt; to claim your bonus.&lt;/p&gt;

&lt;p&gt;The system will analyze your &lt;strong&gt;digital presence&lt;/strong&gt; to determine how much you get &lt;strong&gt;up to $25 per user&lt;/strong&gt;.&lt;br&gt;
It also uses the &lt;strong&gt;x402 protocol&lt;/strong&gt;, which can be used to &lt;strong&gt;pay for API access&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Grab yours here: &lt;a href="https://dub.sh/agentcash" rel="noopener noreferrer"&gt;https://dub.sh/agentcash&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
