RobotInsight / Developer access
API for agents
Robots, components and the companies building them.
Source-backed Korean industry reporting, with reviewed structured fields for agent workflows.
Find Korean actuator suppliers with new announcements this week.
This week means Monday through today in Asia/Seoul. These dates filter article publication, not when an event happened.
→ · Asia/Seoul
https://robotinsight.kr/api/intel?depth=index&limit=10&component=actuator&entityCountry=KR&eventType=product_announcement%2Ccontract&since=2026-10-12&until=2026-10-16No wallet needed. The preview only requests depth=index and never signs a payment. A zero-match week is a valid result within the reviewed coverage.
Run the free query to see matching titles and dates, or open the JSON link directly.
One full public sample
아이언디바이스, 테솔로 로봇핸드 국책과제에서 손 안에 들어가는 온디바이스 AI 모듈 개발 맡는다
Article · Reviewed (UTC)
Inspect sample and source evidence ↗A fixed, deliberately public article. It is not the latest query result. Parameters cannot select other articles.
Pay for the articles returned
USDC, six decimal places. Dollar notation below denotes USDC amounts. Base and Polygon are advertised rails; the client example selects Base.
| Depth | Included | Per article |
|---|---|---|
| index | Titles, dates, IDs and discovery tags | $0.000 |
| brief | Index + summary, KPIs and reviewed bilingual brief | $0.020 |
| full | Brief + article body, sources and complete reviewed intelligence | $0.100 |
Paid query = $0.010 + per-article fee × articles returned
- One brief article: $0.030. Five brief articles: $0.110. One full article: $0.110.
- Index and empty results are free. Cursor continuations waive the base fee. Default: five articles. Maximum: 100 per page.
- Query purchases apply to one response. They do not create an article day pass.
- The separate article-body endpoint costs $0.500 for a 24-hour site-wide article-body pass. It returns X-Day-Pass for bearer reuse across this site’s article-body endpoints; intelligence queries remain separate.
From a free preview to a bounded payment
Start with curl
curl -sS 'https://robotinsight.kr/api/intel?depth=index&limit=10&component=actuator&entityCountry=KR&eventType=product_announcement%2Ccontract&since=2026-10-12&until=2026-10-16'Node client, Base USDC
Node.js 22 or newer. Install the pinned versions, download the client and review its source before running.
npm init -y
npm install --save-exact @x402/core@2.28.0 @x402/evm@2.28.0 viem@2.57.7
curl -fsS https://robotinsight.kr/examples/paid-client.mjs -o paid-client.mjs# Set EVM_PRIVATE_KEY in your local environment. Never put it in browser code.
API_URL='https://robotinsight.kr/api/intel?depth=brief&limit=1' MAX_USDC=0.15 node paid-client.mjsThe client reads EVM_PRIVATE_KEY from your local environment. MAX_USDC caps the quoted price before signing. It retries the identical URL once and decodes PAYMENT-RESPONSE.
Read and copy the complete client
// Node.js 22+. Install the exact versions shown on /developers.
import { x402Client, x402HTTPClient } from '@x402/core/client';
import { decodePaymentResponseHeader } from '@x402/core/http';
import { ExactEvmScheme } from '@x402/evm/exact/client';
import { privateKeyToAccount } from 'viem/accounts';
import { pathToFileURL } from 'node:url';
const BASE_USDC = '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913';
const HOSTS = ['robotinsight.kr', 'jeonjang.kr', 'mobilitychain.kr'];
export function atomicUSDC(value) {
if (!/^\d+(?:\.\d{1,6})?$/.test(value)) throw new Error('MAX_USDC needs at most six decimals');
const [whole, fraction = ''] = value.split('.');
return BigInt(whole) * 1000000n + BigInt(fraction.padEnd(6, '0'));
}
export async function buy({ url, privateKey, maxUSDC = '0.15', fetchImpl = fetch }) {
const target = new URL(url);
if (target.protocol !== 'https:' || !HOSTS.includes(target.hostname) ||
target.pathname !== '/api/intel' || target.username || target.password || target.port || target.hash) {
throw new Error('Use the HTTPS /api/intel URL of one of the three publications');
}
// Keep the identical URL and query parameters for quote and paid retry.
const requestURL = target.href;
const limit = atomicUSDC(maxUSDC);
const initial = await fetchImpl(requestURL, {
headers: { 'X-402-Version': '2' }, redirect: 'error', signal: AbortSignal.timeout(30000),
});
if (initial.ok) return { data: await initial.json(), receipt: null };
if (initial.status !== 402) throw new Error(`Initial request returned ${initial.status}`);
const signer = privateKeyToAccount(privateKey);
const client = new x402Client().register('eip155:8453', new ExactEvmScheme(signer));
const http = new x402HTTPClient(client);
const required = http.getPaymentRequiredResponse(name => initial.headers.get(name), await initial.json());
if (required.x402Version !== 2 || ![requestURL, target.origin + target.pathname].includes(required.resource?.url)) {
throw new Error('Expected a v2 quote for this endpoint');
}
// The canonical resource omits query parameters for directory discovery.
// The paid retry still uses requestURL, including the original filters.
const offer = required.accepts.find(a => a.scheme === 'exact' && a.network === 'eip155:8453' &&
a.asset?.toLowerCase() === BASE_USDC && /^\d+$/.test(a.amount));
if (!offer) throw new Error('No exact Base USDC offer');
if (BigInt(offer.amount) > limit) throw new Error(`Quote ${offer.amount} atomic USDC exceeds MAX_USDC`);
// Narrow before signing: another chain or more expensive offer cannot be selected.
const payload = await http.createPaymentPayload({ ...required, accepts: [offer] });
let response;
try {
response = await fetchImpl(requestURL, {
headers: { ...http.encodePaymentSignatureHeader(payload), 'X-402-Version': '2' },
redirect: 'error', signal: AbortSignal.timeout(30000),
});
} catch {
throw new Error('Paid request outcome is unknown. Do not sign again; check wallet transfers and contact the publication before retrying.');
}
const requestId = response.headers.get('X-Request-ID');
const encoded = response.headers.get('PAYMENT-RESPONSE');
let receipt;
try {
receipt = encoded ? decodePaymentResponseHeader(encoded) : null;
if (!response.ok || !receipt?.success) throw new Error(`Paid request returned ${response.status}; inspect its receipt before retrying`);
return { data: await response.json(), receipt, requestId };
} catch (error) {
// Retain transaction evidence even when body delivery or decoding fails.
error.receipt = receipt || null;
error.requestId = requestId;
throw error;
}
}
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
try {
const result = await buy({
url: process.env.API_URL || 'https://robotinsight.kr/api/intel?depth=brief&limit=1',
privateKey: process.env.EVM_PRIVATE_KEY,
maxUSDC: process.env.MAX_USDC || '0.15',
});
console.log(JSON.stringify(result, null, 2));
} catch (error) {
console.error(JSON.stringify({ error: error.message, requestId: error.requestId, receipt: error.receipt }));
process.exitCode = 1;
}
}
If a paid request times out, stop. Do not create another authorization automatically. Inspect wallet transfers and any receipt or request ID, then contact the publication to resolve delivery before retrying.
Captured response examples
Captured from local Workers on 2026-10-15. Excerpts omit fields. Addresses are test values; settlement and transaction are mocked. No funded payment was made. Only the fixed public sample appears in the paid example.
200 · Free index
{
"count": 1,
"items": [
{
"slug": "2026-10-15-1",
"date": "2026-10-15",
"region": "company",
"category": "로봇 반도체",
"title": "아이언디바이스, 테솔로 로봇핸드 국책과제에서 손 안에 들어가는 온디바이스 AI 모듈 개발 맡는다",
"facets": [
"physical-ai"
],
"articleId": "robotinsight:424",
"hasIntelligence": true,
"entityIds": [
"iron-device",
"tesollo",
"hanyang-university"
],
"components": [
"semiconductor",
"gripper",
"software"
]
}
],
"nextCursor": null
}402 · Default v1 body
{
"x402Version": 1,
"accepts": [
{
"scheme": "exact",
"network": "base",
"maxAmountRequired": "110000",
"resource": "https://robotinsight.kr/api/intel?depth=full&limit=1&entity=iron-device",
"description": "Korean robotics industry intelligence, sold per query. Structured feed of Korea/Asia robot-sector news, analysis and KPIs - humanoids, physical AI, robot components (reducers, actuators, MEMS force-torque and tactile sensors), robot semiconductors, defense and logistics robots - written from Korean primary reporting and DART filings that English-language sources do not cover. Filter by date, region, category and keyword. Pay per query in USDC on Base or Polygon; empty results free.",
"mimeType": "application/json",
"payTo": "0x0000000000000000000000000000000000000002",
"maxTimeoutSeconds": 60,
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
}
},
{
"scheme": "exact",
"network": "polygon",
"maxAmountRequired": "110000",
"resource": "https://robotinsight.kr/api/intel?depth=full&limit=1&entity=iron-device",
"description": "Korean robotics industry intelligence, sold per query. Structured feed of Korea/Asia robot-sector news, analysis and KPIs - humanoids, physical AI, robot components (reducers, actuators, MEMS force-torque and tactile sensors), robot semiconductors, defense and logistics robots - written from Korean primary reporting and DART filings that English-language sources do not cover. Filter by date, region, category and keyword. Pay per query in USDC on Base or Polygon; empty results free.",
"mimeType": "application/json",
"payTo": "0x0000000000000000000000000000000000000002",
"maxTimeoutSeconds": 60,
"asset": "0x3c499c542cEF5E3811e1192ce70d8cc03d5c3359",
"extra": {
"name": "USD Coin",
"version": "2"
}
}
]
}402 · Negotiated v2 body
{
"x402Version": 2,
"resource": {
"url": "https://robotinsight.kr/api/intel",
"description": "Korean robotics industry intelligence, sold per query. Structured feed of Korea/Asia robot-sector news, analysis and KPIs - humanoids, physical AI, robot components (reducers, actuators, MEMS force-torque and tactile sensors), robot semiconductors, defense and logistics robots - written from Korean primary reporting and DART filings that English-language sources do not cover. Filter by date, region, category and keyword. Pay per query in USDC on Base or Polygon; empty results free.",
"mimeType": "application/json"
},
"accepts": [
{
"scheme": "exact",
"network": "eip155:8453",
"amount": "110000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x0000000000000000000000000000000000000002",
"maxTimeoutSeconds": 60,
"extra": {
"name": "USD Coin",
"version": "2"
}
},
{
"scheme": "exact",
"network": "eip155:137",
"amount": "110000",
"asset": "0x3c499c542cEF5E3811e1192ce70d8cc03d5c3359",
"payTo": "0x0000000000000000000000000000000000000002",
"maxTimeoutSeconds": 60,
"extra": {
"name": "USD Coin",
"version": "2"
}
}
]
}200 · Paid body excerpt (mock settlement)
{
"count": 1,
"items": [
{
"articleId": "robotinsight:424",
"date": "2026-10-15",
"hasIntelligence": true,
"intelligence": {
"schemaVersion": "1.0",
"summary": {
"ko": "아이언디바이스는 테솔로 주관 로봇핸드 과제에서 저전력 AI 연산 모듈을 개발한다고 밝혔다. 센서 입력부터 모터 제어까지 20ms 이하라는 수치는 개발 목표다.",
"en": "Iron Device says it will develop a low-power AI module for a Tesollo-led robot-hand project, including optimization of algorithms developed by Tesollo and Hanyang University. Sensor-to-motor latency of at most 20 ms is a development target."
},
"relationships": [
{
"subjectId": "iron-device",
"predicate": "develops_with",
"objectId": "tesollo",
"component": "gripper",
"status": "confirmed",
"claimBasis": "company_claim",
"evidenceIds": [
"robotinsight:424:source:1"
]
},
{
"subjectId": "tesollo",
"predicate": "develops_with",
"objectId": "hanyang-university",
"component": "software",
"status": "confirmed",
"claimBasis": "company_claim",
"evidenceIds": [
"robotinsight:424:source:1"
]
}
],
"metrics": [
{
"name": "sensor-to-motor latency target",
"value": "20",
"unit": "ms",
"currency": null,
"period": null,
"qualifier": "up_to",
"basis": "target",
"claimBasis": "company_claim",
"evidenceIds": [
"robotinsight:424:source:1"
]
}
]
}
}
],
"nextCursor": null
}Decoded PAYMENT-RESPONSE (mock)
{
"success": true,
"network": "eip155:8453",
"transaction": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}200 · Empty, free result
{
"count": 0,
"items": [],
"nextCursor": null
}The default 402 body is v1; PAYMENT-REQUIRED always carries a base64 v2 challenge. Request a v2 body with X-402-Version: 2, Accept: application/vnd.x402+json; version=2, x402Version=2, or a PAYMENT-SIGNATURE header.
Settlement responses use PAYMENT-RESPONSE and legacy X-PAYMENT-RESPONSE with identical values. Free responses and verification failures have no receipt. A returned settlement failure retains its failure receipt.
Browser access: GET and OPTIONS, Access-Control-Allow-Origin: *, credentials omitted. Payment and bearer headers are allowed; payment response headers and X-Day-Pass are exposed. Never put a wallet key in browser code.
Coverage you can inspect
30 / 425 articles have reviewed structured intelligence. Reviewed publication range: 2026-10-02 → 2026-10-15. Latest enrichment update: 2026-10-15T08:26:44Z.
Corpus newest article: 2026-10-15. Publication and enrichment follow editorial review; there is no fixed update SLA. Match freshness is returned separately from corpus freshness.
Articles remain Korean. Documentation and selected reviewed summaries are bilingual. Missing enrichment is unknown, not evidence that no event occurred.
- entity · component · eventType · entityCountry
- Structured filters search reviewed records only. Different filters combine with AND; comma-separated values combine with OR. They must match the same event and participant. Component matching requires a supplier or developer; a Korean customer does not make a foreign supplier Korean.
- q · category · since · until · cursor · region
- Existing keyword, category and pagination behavior is preserved. since/until filter inclusive article publication dates. Preview and paid depths use identical selection and ordering.
- claimBasis · status · evidenceIds
- Every reviewed event, relationship and metric has supporting evidence. Company statements, public-agency announcements, reporting and editorial inference remain distinct. Inference is excluded from structured matches. A confirmed company-claimed relationship is not an independent audit. Plans and forecasts stay qualified.
- schemaVersion: 1.0
- Independent of the payment version. Additive optional fields may be introduced within 1.x; incompatible changes require a new major version. Amounts are decimal strings in original units and currency. Unknown dates, countries and tickers are null.
Supported component and event vocabulary
{
"schemaVersion": "1.0",
"components": [
"actuator",
"reducer",
"sensor",
"battery",
"controller",
"semiconductor",
"gripper",
"robot",
"software",
"material",
"camera",
"charging",
"display",
"motor",
"pcb",
"passive_component",
"wiring"
],
"eventTypes": [
"product_announcement",
"contract",
"funding",
"capacity_change",
"deployment",
"policy",
"research_result",
"security_disclosure",
"business_update",
"market_report"
],
"claimBases": [
"official_announcement",
"company_claim",
"media_report",
"editorial_inference"
]
}Content use
Use purchased responses in your agent’s analysis and retain source attribution. Access does not transfer rights to external source material. Contact us for redistribution or bulk republication arrangements. Reporting and analysis are informational; source claims may be corrected.