한국·미국 공시 분석 API
v1원문 수집을 넘어, 구조화된 분석 결과까지.
한국과 미국 공시의 분석, 구조화된 실적 Delta, 기업 자산을 하나의 API로 연결합니다. 로그인만 하면 체험 키로 바로 시작할 수 있습니다.
https://app.0si.ai/api/v1공시 API 제공 범위
Disclosure API는 공시.ai의 한국·미국 공시 분석 결과를 자동화 시스템, 사내 대시보드, 알림 봇과 리서치 워크플로에 연결하기 위한 Pro 기능입니다. 모든 시각은 ISO 8601 UTC로 반환하며, 계산 가능한 비율은 JSON number 또는 null을 사용합니다.
OpenDART나 SEC의 공식 API가 원문·공개 데이터를 제공한다면, 공시.ai API는 수집한 공시에 분석 결과와 비교 지표를 연결해 제공합니다. 공식 기관의 API를 대체하거나 모든 문서를 보장하는 서비스는 아닙니다. 시세·실적 항목의 제공 여부와 기준은 각 응답에서 확인하고, 투자 판단 전 원문을 대조하세요.
QoQ·YoY와 결측치 해석 · 분석 기준·제약 · 문서 업데이트:
공시의 사실을 인용할 때는 source_url의 원문을, 공시.ai의 해석을 인용할 때는 해당 공시 요약과 출처·인용 기준을 함께 확인하세요. 공개 공시 요약 모음은 읽기와 인용을 위한 공개 페이지이며, 인증이 필요한 Pro API를 대신하지 않습니다.
llms.txt는 공개 문서를 찾기 위한 선택적 목록입니다. API 명세나 수집·학습 허용 정책을 대신하지 않으며 검색 순위나 AI 인용을 보장하지 않습니다.
AI 에이전트 연결 (원격 MCP)
MCP 서버 주소 https://app.0si.ai/api/mcp(Streamable HTTP)를 Claude, ChatGPT, Cursor 등 MCP를 지원하는 AI 도구에 추가하세요. 0si.ai 로그인과 연결 승인(OAuth 2.1·PKCE)을 거치면 바로 사용할 수 있고, 헤더를 지정할 수 있는 도구는 Authorization: Bearer <API 키>로도 연결됩니다.
claude mcp add --transport http 0si https://app.0si.ai/api/mcp
공시 검색, SEC 공시 검색, 공시 상세, 실적·정정 비교, 공시 후 주가 반응, 기업 검색, 기업 정보, 사용량 등 8개 도구를 모두 읽기 전용으로 제공합니다. REST API와 같은 한도가 적용됩니다(체험: 분당 10회·하루 100회·30초 공개 지연, Pro: 실시간). 승인한 연결은 아래 API 키 목록에 MCP · 도구 이름으로 표시되고 언제든 폐기할 수 있습니다. 연결한 AI 도구에 전달된 데이터는 해당 제공자의 개인정보 정책을 따릅니다.
로컬 MCP 클라이언트 다운로드 · 원격 연결 대신 내 컴퓨터에서 stdio로 실행하려면 Python 3.11 이상에서 압축 파일의 README를 따르세요.
빠른 시작 · 첫 API 호출
- 로그인 후 아래 콘솔에서 API 키를 생성합니다.Pro가 아니면 체험 키가 발급되며, 키 원문은 생성 직후 한 번만 표시됩니다.
- 키를 서버의 비밀 저장소에 보관합니다.브라우저 코드, 모바일 앱 번들, Git 저장소에는 넣지 마세요.
- Status 호출로 연결을 검증합니다.성공하면 HTTP 200과 현재 scope가 반환됩니다.
# API 키는 서버 환경변수에 보관하세요.
export OSI_API_KEY="osi_live_..."
curl https://app.0si.ai/api/v1/status \
-H "Authorization: Bearer $OSI_API_KEY"
import json
import os
from urllib.request import Request, urlopen
request = Request(
"https://app.0si.ai/api/v1/status",
headers={"Authorization": f"Bearer {os.environ['OSI_API_KEY']}"},
)
with urlopen(request, timeout=15) as response:
print(json.load(response))
// Node.js 서버에서 실행합니다.
const response = await fetch("https://app.0si.ai/api/v1/status", {
headers: {
Authorization: `Bearer ${process.env.OSI_API_KEY}`
},
signal: AbortSignal.timeout(15000)
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
Authentication
모든 v1 요청은 HTTPS와 Bearer 인증을 사용합니다. API 키는 계정에 귀속됩니다. Pro 구독이 끝나면 같은 키가 체험 키 한도로 바뀌고, 키를 폐기하면 즉시 사용할 수 없습니다.
키는 서버에서 HMAC 해시로만 저장됩니다. 유출이 의심되면 기존 키를 폐기하고 새 키를 발급하세요.
Authorization: Bearer osi_live_your_secret_key
# 또는 X-API-Key: osi_live_your_secret_key
REST Reference
/api/v1/companies한국 상장사와 SEC 공시 기업의 회사명·종목코드·미국 티커 검색, 시장·업종 필터, 최대 50개 종목의 일괄 자산 조회를 지원합니다. market=US로 미국 기업만 조회할 수 있습니다.
/api/v1/companies/{stock_code}종목의 현재 시가총액, 밸류에이션, 재무·주식수 기준, 대기 중 기업행동을 반환합니다. 각 값의 기준 시점과 출처는 basis에서 확인할 수 있습니다.
/api/v1/companies/{stock_code}/fundamentals/history공시 분석 당시 저장된 기업 자산 스냅샷을 최신순으로 반환합니다. 현재 값으로 과거를 덮어쓰지 않으므로 시점 재현과 백테스트에 사용할 수 있습니다.
/api/v1/disclosures분석이 완료된 공시를 최신순으로 조회합니다. delta는 실적·정기보고서·정정·계약·배당·증자 등 공시 유형별 구조화 값이며, 기존 earnings_delta도 계속 제공됩니다.
integer이 sequence보다 오래된 항목integer이 sequence보다 새로운 항목1..100기본 50string종목코드 정확히 일치KOSPI | KOSDAQ | KONEX | US시장 구분string한국 시장 업종명 부분 일치enum[]반복 지정 가능한 5단계 방향성 필터KIND | OpenDART | SEC공시 출처 필터string[]SEC 양식 반복 필터, 10-Q는 10-Q/A 포함digitsSEC CIK 정확히 일치boolean10-Q·10-K·20-F·40-F만 조회string회사명, 종목코드, 제목 검색/api/v1/sec/filingsSEC EDGAR API
미국 공시만 조회하는 전용 경로입니다. ticker, cik, 반복 가능한 form, periodic_only, 방향성 및 제출 시각 필터를 지원합니다. 응답의 sec에는 accession number, CIK, 원본 form, 수정공시·정기보고서 여부가 구조화됩니다.
curl "https://app.0si.ai/api/v1/sec/filings?form=10-Q&form=10-K&periodic_only=true" \
-H "Authorization: Bearer $OSI_API_KEY"
/api/v1/sec/filings/{accession_number}SEC accession number로 분석, 수집 원문과 구조화 메타데이터를 조회합니다. 예: 0000320193-26-000079.
/api/v1/sec/filings/{accession_number}/delta10-Q·10-K·20-F·40-F의 SEC Companyfacts XBRL 수치를 동일 기간과 비교한 periodic_delta를 반환합니다. 매출, 영업이익, 순이익, 자산·부채·자본, 현금 및 영업현금흐름 중 확인된 항목만 제공하며, 비교 근거와 통화를 함께 표시합니다.
{
"type": "periodic_delta",
"label": "SEC 실적 Delta",
"metrics": [{
"key": "revenue",
"current": "$12.4B",
"prior": "$10.8B",
"change": "+14.8%",
"change_value": 14.8,
"comparison_basis": "전년 동기"
}],
"source_note": "SEC XBRL 연결재무제표 비교"
}
/api/v1/disclosures/{disclosure_id}분석과 수집 원문을 반환합니다. 한국 공시는 구조화 Delta, 기업 자산 스냅샷과 공시 규모를 함께 제공하고, 미국 공시는 jurisdiction: US, filing_form, sec 메타데이터 및 지원되는 XBRL Delta를 제공합니다. 법적 원문은 source_url의 KIND·OpenDART 또는 SEC EDGAR 문서입니다.
{
"schema_version": 1,
"type": "earnings_delta",
"period": "2026년 2분기",
"basis": "consolidated",
"basis_label": "연결",
"unit": "백만원",
"is_correction": false,
"metrics": [{
"key": "operating_income",
"label": "영업이익",
"current": { "value": 11186, "display": "11,186 백만원" },
"qoq": {
"rate_pct": 44.57,
"transition": null,
"label": "+44.57%",
"direction": "up",
"prior": { "value": 7738, "display": "7,738 백만원" },
"period": "2026년 1분기"
},
"yoy": {
"rate_pct": 34.69,
"transition": null,
"label": "+34.69%",
"direction": "up",
"prior": { "value": 8305, "display": "8,305 백만원" },
"period": "2025년 2분기"
},
"cumulative": null
}],
"source_note": "공시 원문의 잠정실적 표 기준"
}
국가별 월간 실적 표를 지원하는 공시는 period_type: month와 항목별 mom(전월 대비), yoy(전년 동월 대비), scope(국가·법인 기준)를 추가 제공합니다. 이 경우 qoq는 null이며 항목 키는 country:한국:revenue와 같이 구분합니다. 국가별 수치를 합산해 연결 실적으로 해석하면 안 됩니다. 지원되지 않거나 원문 수치가 없는 비교는 제공하지 않으며 기존 분기 응답 구조는 유지됩니다.
/api/v1/disclosures/{disclosure_id}/market-reaction한국·미국 공시의 전후 30분 가격 시계열과 공시 후 등락률을 반환합니다. status는 available, pending, reference_missing, insufficient_samples, unavailable, market_closed, unsupported로 구분됩니다. unavailable은 구간 시세가 없거나 보완 조회가 실패한 상태이며, recovery_status: failed로 조회 실패를 구분할 수 있습니다. market_closed는 공시 전후 30분 전체가 미국 시세 수집 시간(뉴욕 시간 평일 04:00~20:00) 밖인 경우이며 휴장일 판정을 뜻하지 않습니다.
미국 공시의 비교 기준은 reference_basis로 명시합니다. pre_disclosure는 공시 전 실제 체결가, first_post는 공시 후 첫 체결가이며, 기준이 없으면 null입니다. 실제 비교 가격·시각은 effective_reference_price와 effective_reference_at을 사용하세요. first_post는 반드시 이후의 다른 시각에 체결 표본이 있어야 reliable: true가 되며, 단일 표본은 0% 수익률을 뜻하지 않습니다. 사용자에게는 ‘첫 체결 이후’로 표시하고 공시 직전 대비로 표현하지 마세요.
reference_stale: true는 공시 전 30분보다 오래된 실제 체결가를 비교 기준으로 사용했음을 뜻합니다. 이 경우 ‘최근 체결 대비’로 구분하세요. 차트의 전후 30분 구간은 늘어나지 않습니다. 공시 후 구간 가격은 post_disclosure_price와 post_disclosure_price_at에 별도로 제공됩니다. 목록·상세의 latest_price는 현재가일 수 있으므로 이 값으로 공시 후 등락률을 다시 계산하지 마세요. 차트 엔드포인트의 latest_price는 차트 구간의 마지막 가격입니다. 후속 표본이 30분 종료 시점과 멀면 정확히 ‘공시 30분 후’가 아닌 ‘공시 후 체결’로 표시하고 실제 표본 시각을 함께 사용하세요.
위 기준가·후속 가격·복구 상태 필드는 공시 목록 및 상세 응답의 market_reaction에도 추가 제공됩니다. 기존 필드는 유지되며, 결측 가격이나 reliable: false를 0%로 대체하지 마세요.
/api/v1/disclosures/{disclosure_id}/delta목록 전체가 필요하지 않을 때 해당 공시의 구조화 Delta만 조회합니다. 지원되지 않는 유형은 HTTP 200과 available: false로 구분합니다.
/api/v1/disclosures/{disclosure_id}/revisions명시적으로 연결된 KIND·OpenDART·SEC 원문, 처리 이벤트와 현재 정정 Delta를 반환합니다. 추정으로 서로 다른 공시를 연결하지 않습니다.
/api/v1/usage현재 키의 분당 잔여 호출, 누적 요청, 활성 SSE 연결, 웹훅과 최근 24시간 전달 상태를 반환합니다.
Signed Webhooks
공개 HTTPS 엔드포인트를 최대 5개 등록할 수 있습니다(Pro). disclosure.created와 disclosure.updated를 선택하고, markets로 한국·미국을, filing_forms로 SEC 양식을 제한합니다. stock_codes(최대 100개 종목코드·티커), sentiments(방향성), watchlist_only(0si.ai 앱에 저장한 관심 종목만)로 필요한 공시만 받을 수 있습니다. 필터를 생략하면 전체를 전달하며, 실패한 전달은 지수 간격으로 재시도됩니다.
curl -X POST https://app.0si.ai/api/v1/webhooks \
-H "Authorization: Bearer $OSI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Trading alerts",
"url": "https://example.com/hooks/osi",
"events": ["disclosure.created", "disclosure.updated"],
"markets": ["KR", "US"],
"sentiments": ["very_positive", "positive"],
"watchlist_only": true
}'
/api/v1/webhooks/{webhook_id}이름·URL·이벤트·필터를 바꾸거나 enabled=false로 일시 중지합니다. 보낸 필드만 변경되며, 중지하면 대기 중인 전달은 취소됩니다.
/api/v1/webhooks/{webhook_id}웹훅과 전달 기록을 삭제합니다.
/api/v1/webhooks/{webhook_id}/rotate-secret서명 비밀값을 새로 발급합니다. 새 whsec_... 값은 응답에서 한 번만 표시되고 이전 값은 즉시 무효화됩니다.
/api/v1/webhooks/{webhook_id}/testwebhook.test 이벤트를 한 번 보내 서명 검증과 수신 서버를 점검합니다.
/api/v1/webhooks/{webhook_id}/deliveries최근 전달 시도의 상태, 응답 코드, 지연 시간과 오류를 확인합니다.
생성·회전 시 한 번 표시되는 whsec_... 값을 보관하세요. X-0si-Signature의 v1은 HMAC-SHA256(timestamp.body)이며, 재전송 공격 방지를 위해 X-0si-Timestamp 허용 오차를 함께 검사해야 합니다.
X-0si-Event이벤트 유형X-0si-Delivery중복 제거용 전달 UUIDX-0si-Timestamp서명 Unix timestampX-0si-Signaturev1 HMAC 서명Realtime SSE
폴링 대신 하나의 장기 연결에서 새 공시 감지와 분석·시세 갱신을 받습니다. market=KR|US, 반복 가능한 filing_form·stock_code·sentiment, 관심 종목만 받는 watchlist=true로 스트림을 좁힐 수 있고, /api/v1/sec/stream은 미국 전용 단축 경로입니다. 분석 완료 정기보고서 이벤트에는 REST와 동일한 Delta가 포함됩니다. 이벤트 응답의 analysis.status는 발생 당시 상태이며 event.analysis_status_at_event와 항상 같습니다. 단조 증가 이벤트 id를 Last-Event-ID 헤더 또는 cursor로 다시 보내면 놓친 이벤트를 순서대로 복구합니다. 이벤트는 30일간 보관되며 그보다 오래된 cursor는 보관 중인 가장 오래된 이벤트부터 이어집니다.
curl -N https://app.0si.ai/api/v1/stream \
-H "Authorization: Bearer $OSI_API_KEY" \
-H "Accept: text/event-stream"
event: disclosure.created
id: 16395578
data: {"id":"kind:20260722000912", ...}
curl -N "https://app.0si.ai/api/v1/sec/stream?form=10-Q&form=10-K" \
-H "Authorization: Bearer $OSI_API_KEY" \
-H "Accept: text/event-stream"
curl -N "https://app.0si.ai/api/v1/stream?watchlist=true&sentiment=very_positive&sentiment=positive" \
-H "Authorization: Bearer $OSI_API_KEY" \
-H "Accept: text/event-stream"
stream.ready연결과 시작 cursor 확인disclosure.created공시 원문 감지 즉시 전달disclosure.updated분석 또는 시장 기준값 갱신heartbeat15초 주기 연결 생존 확인Limits & Errors
Pro 키당 기본 한도는 분당 120회, 실시간 스트림은 동시에 2개, 웹훅은 계정당 5개입니다. REST 응답에는 현재 한도를 확인할 수 있는 헤더가 포함됩니다.
pro_plan_requiredX-RateLimit-Limit분당 허용 요청 수
X-RateLimit-Remaining현재 구간의 남은 요청 수
X-RateLimit-Reset다음 구간의 Unix timestamp
X-Request-Id지원 문의와 추적에 사용하는 요청 ID
invalid_request파라미터 또는 요청 형식 오류invalid_api_key키가 없거나 유효하지 않음pro_plan_required체험 키로 스트림·웹훅을 호출함not_found경로 또는 대상 리소스를 찾을 수 없음rate_limit_exceeded분당 호출 또는 동시 스트림 한도 초과daily_quota_exceeded체험 키 일일 호출 한도 초과(UTC 자정 초기화)SDK
의존성 없이 바로 쓸 수 있는 단일 파일 클라이언트입니다. 인증 헤더, 페이지네이션, 429 재시도와 웹훅 서명 검증을 포함합니다. 키는 서버 환경변수 OSI_API_KEY로 전달하세요.
from osi_client import OsiClient
client = OsiClient() # reads OSI_API_KEY
for item in client.iter_disclosures(watchlist=True, sentiment=["positive"], max_items=50):
print(item["company_name"], item["analysis"]["signal"])
import { OsiClient, verifyWebhook } from "./osi-client.mjs";
const client = new OsiClient(); // reads process.env.OSI_API_KEY
const { data } = await client.listDisclosures({ source: "SEC", limit: 20 });
변경 이력
- 체험 키: 로그인한 모든 계정이 REST 조회용 키를 발급(분당 10회·하루 100회, 30초 공개 지연)
- 웹훅 필터
stock_codes·sentiments·watchlist_only, 스트림 필터stock_code·sentiment·watchlist, 목록watchlist - 모든
/api/v1오류가{"detail": {"code", "message"}}형식으로 통일 - 이벤트 보관 기간 30일 명시, Python·JavaScript SDK와 서비스 상태 페이지 공개
- 미국 SEC 공시 전용 엔드포인트와 정기보고서 Delta, SEC 양식 필터
API Key Console
현재 0si.ai 계정의 키를 발급하고 사용량을 확인합니다. 키 원문은 생성할 때만 표시됩니다.