개발자 문서 시작하기

한국·미국 공시 분석 API

v1

원문 수집을 넘어, 구조화된 분석 결과까지.

한국과 미국 공시의 분석, 구조화된 실적 Delta, 기업 자산을 하나의 API로 연결합니다. 로그인만 하면 체험 키로 바로 시작할 수 있습니다.

BASE URLhttps://app.0si.ai/api/v1
REST API공시 · 기업 · 시장 반응Webhooks서명된 이벤트 수신SSE Stream연속 수신과 이벤트 재개
01

공시 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를 따르세요.

분석 결과방향성, 확신, 핵심 포인트와 매출·영업이익·순이익 QoQ·YoY
SEC EDGARaccession·CIK·form과 10-Q·10-K·20-F·40-F XBRL 비교 Delta
기업 자산시가총액, PER·PBR·ROE, 발행주식, 재무 기준과 공시 규모
시장반응공시 기준가, 최신가, 공시 후 등락률과 전후 30분 시계열
실시간 전달새 분석과 갱신 이벤트를 서명 웹훅 또는 SSE로 순서대로 수신
02

빠른 시작 · 첫 API 호출

  1. 로그인 후 아래 콘솔에서 API 키를 생성합니다.Pro가 아니면 체험 키가 발급되며, 키 원문은 생성 직후 한 번만 표시됩니다.
  2. 키를 서버의 비밀 저장소에 보관합니다.브라우저 코드, 모바일 앱 번들, Git 저장소에는 넣지 마세요.
  3. 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"
03

Authentication

모든 v1 요청은 HTTPS와 Bearer 인증을 사용합니다. API 키는 계정에 귀속됩니다. Pro 구독이 끝나면 같은 키가 체험 키 한도로 바뀌고, 키를 폐기하면 즉시 사용할 수 없습니다.

Secret handling

키는 서버에서 HMAC 해시로만 저장됩니다. 유출이 의심되면 기존 키를 폐기하고 새 키를 발급하세요.

HTTP header
Authorization: Bearer osi_live_your_secret_key
# 또는 X-API-Key: osi_live_your_secret_key
04

REST Reference

GET/api/v1/companies

한국 상장사와 SEC 공시 기업의 회사명·종목코드·미국 티커 검색, 시장·업종 필터, 최대 50개 종목의 일괄 자산 조회를 지원합니다. market=US로 미국 기업만 조회할 수 있습니다.

GET/api/v1/companies/{stock_code}

종목의 현재 시가총액, 밸류에이션, 재무·주식수 기준, 대기 중 기업행동을 반환합니다. 각 값의 기준 시점과 출처는 basis에서 확인할 수 있습니다.

GET/api/v1/companies/{stock_code}/fundamentals/history

공시 분석 당시 저장된 기업 자산 스냅샷을 최신순으로 반환합니다. 현재 값으로 과거를 덮어쓰지 않으므로 시점 재현과 백테스트에 사용할 수 있습니다.

GET/api/v1/disclosures

분석이 완료된 공시를 최신순으로 조회합니다. delta는 실적·정기보고서·정정·계약·배당·증자 등 공시 유형별 구조화 값이며, 기존 earnings_delta도 계속 제공됩니다.

cursorinteger이 sequence보다 오래된 항목
afterinteger이 sequence보다 새로운 항목
limit1..100기본 50
stock_codestring종목코드 정확히 일치
marketKOSPI | KOSDAQ | KONEX | US시장 구분
sectorstring한국 시장 업종명 부분 일치
sentimentenum[]반복 지정 가능한 5단계 방향성 필터
sourceKIND | OpenDART | SEC공시 출처 필터
filing_formstring[]SEC 양식 반복 필터, 10-Q는 10-Q/A 포함
cikdigitsSEC CIK 정확히 일치
periodic_onlyboolean10-Q·10-K·20-F·40-F만 조회
qstring회사명, 종목코드, 제목 검색
GET/api/v1/sec/filings

SEC EDGAR API

미국 공시만 조회하는 전용 경로입니다. ticker, cik, 반복 가능한 form, periodic_only, 방향성 및 제출 시각 필터를 지원합니다. 응답의 sec에는 accession number, CIK, 원본 form, 수정공시·정기보고서 여부가 구조화됩니다.

US periodic filings
curl "https://app.0si.ai/api/v1/sec/filings?form=10-Q&form=10-K&periodic_only=true" \
  -H "Authorization: Bearer $OSI_API_KEY"
GET/api/v1/sec/filings/{accession_number}

SEC accession number로 분석, 수집 원문과 구조화 메타데이터를 조회합니다. 예: 0000320193-26-000079.

GET/api/v1/sec/filings/{accession_number}/delta

10-Q·10-K·20-F·40-F의 SEC Companyfacts XBRL 수치를 동일 기간과 비교한 periodic_delta를 반환합니다. 매출, 영업이익, 순이익, 자산·부채·자본, 현금 및 영업현금흐름 중 확인된 항목만 제공하며, 비교 근거와 통화를 함께 표시합니다.

SEC 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 연결재무제표 비교"
}
GET/api/v1/disclosures/{disclosure_id}

분석과 수집 원문을 반환합니다. 한국 공시는 구조화 Delta, 기업 자산 스냅샷과 공시 규모를 함께 제공하고, 미국 공시는 jurisdiction: US, filing_form, sec 메타데이터 및 지원되는 XBRL Delta를 제공합니다. 법적 원문은 source_url의 KIND·OpenDART 또는 SEC EDGAR 문서입니다.

earnings_delta
{
  "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와 같이 구분합니다. 국가별 수치를 합산해 연결 실적으로 해석하면 안 됩니다. 지원되지 않거나 원문 수치가 없는 비교는 제공하지 않으며 기존 분기 응답 구조는 유지됩니다.

GET/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%로 대체하지 마세요.

GET/api/v1/disclosures/{disclosure_id}/delta

목록 전체가 필요하지 않을 때 해당 공시의 구조화 Delta만 조회합니다. 지원되지 않는 유형은 HTTP 200과 available: false로 구분합니다.

GET/api/v1/disclosures/{disclosure_id}/revisions

명시적으로 연결된 KIND·OpenDART·SEC 원문, 처리 이벤트와 현재 정정 Delta를 반환합니다. 추정으로 서로 다른 공시를 연결하지 않습니다.

GET/api/v1/usage

현재 키의 분당 잔여 호출, 누적 요청, 활성 SSE 연결, 웹훅과 최근 24시간 전달 상태를 반환합니다.

05

Signed Webhooks

공개 HTTPS 엔드포인트를 최대 5개 등록할 수 있습니다(Pro). disclosure.created와 disclosure.updated를 선택하고, markets로 한국·미국을, filing_forms로 SEC 양식을 제한합니다. stock_codes(최대 100개 종목코드·티커), sentiments(방향성), watchlist_only(0si.ai 앱에 저장한 관심 종목만)로 필요한 공시만 받을 수 있습니다. 필터를 생략하면 전체를 전달하며, 실패한 전달은 지수 간격으로 재시도됩니다.

Create webhook
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
  }'
PATCH/api/v1/webhooks/{webhook_id}

이름·URL·이벤트·필터를 바꾸거나 enabled=false로 일시 중지합니다. 보낸 필드만 변경되며, 중지하면 대기 중인 전달은 취소됩니다.

DELETE/api/v1/webhooks/{webhook_id}

웹훅과 전달 기록을 삭제합니다.

POST/api/v1/webhooks/{webhook_id}/rotate-secret

서명 비밀값을 새로 발급합니다. 새 whsec_... 값은 응답에서 한 번만 표시되고 이전 값은 즉시 무효화됩니다.

POST/api/v1/webhooks/{webhook_id}/test

webhook.test 이벤트를 한 번 보내 서명 검증과 수신 서버를 점검합니다.

GET/api/v1/webhooks/{webhook_id}/deliveries

최근 전달 시도의 상태, 응답 코드, 지연 시간과 오류를 확인합니다.

Signature verification

생성·회전 시 한 번 표시되는 whsec_... 값을 보관하세요. X-0si-Signature의 v1은 HMAC-SHA256(timestamp.body)이며, 재전송 공격 방지를 위해 X-0si-Timestamp 허용 오차를 함께 검사해야 합니다.

X-0si-Event이벤트 유형
X-0si-Delivery중복 제거용 전달 UUID
X-0si-Timestamp서명 Unix timestamp
X-0si-Signaturev1 HMAC 서명
06

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는 보관 중인 가장 오래된 이벤트부터 이어집니다.

Server-Sent Events
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", ...}
SEC 10-Q / 10-K only
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"
Watchlist positives only
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초 주기 연결 생존 확인
07

Limits & Errors

Pro 키당 기본 한도는 분당 120회, 실시간 스트림은 동시에 2개, 웹훅은 계정당 5개입니다. REST 응답에는 현재 한도를 확인할 수 있는 헤더가 포함됩니다.

Pro모든 엔드포인트 · 분당 120회 · 스트림 2개 · 웹훅 5개 · 추가 지연 없음
체험 키로그인한 모든 계정 · 키 1개 · REST 조회만 · 분당 10회, 하루 100회(UTC) · 무료 플랜과 같은 30초 공개 지연 · 스트림·웹훅은 pro_plan_required
X-RateLimit-Limit분당 허용 요청 수 X-RateLimit-Remaining현재 구간의 남은 요청 수 X-RateLimit-Reset다음 구간의 Unix timestamp X-Request-Id지원 문의와 추적에 사용하는 요청 ID
400/422invalid_request파라미터 또는 요청 형식 오류
401invalid_api_key키가 없거나 유효하지 않음
403pro_plan_required체험 키로 스트림·웹훅을 호출함
404not_found경로 또는 대상 리소스를 찾을 수 없음
429rate_limit_exceeded분당 호출 또는 동시 스트림 한도 초과
429daily_quota_exceeded체험 키 일일 호출 한도 초과(UTC 자정 초기화)
08

SDK

의존성 없이 바로 쓸 수 있는 단일 파일 클라이언트입니다. 인증 헤더, 페이지네이션, 429 재시도와 웹훅 서명 검증을 포함합니다. 키는 서버 환경변수 OSI_API_KEY로 전달하세요.

Python
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"])
JavaScript (Node 18+)
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 });
09

변경 이력

1.4.0
  • 체험 키: 로그인한 모든 계정이 REST 조회용 키를 발급(분당 10회·하루 100회, 30초 공개 지연)
  • 웹훅 필터 stock_codes·sentiments·watchlist_only, 스트림 필터 stock_code·sentiment·watchlist, 목록 watchlist
  • 모든 /api/v1 오류가 {"detail": {"code", "message"}} 형식으로 통일
  • 이벤트 보관 기간 30일 명시, Python·JavaScript SDK와 서비스 상태 페이지 공개
1.3.0
  • 미국 SEC 공시 전용 엔드포인트와 정기보고서 Delta, SEC 양식 필터
08

API Key Console

현재 0si.ai 계정의 키를 발급하고 사용량을 확인합니다. 키 원문은 생성할 때만 표시됩니다.

계정과 API 권한을 확인하고 있습니다.

문서 검색