문서 / 나라장터 전용 입찰가
나라장터 전용 입찰가 API v1
라플라스 듀오가 고객사별로 학습한 전용 입찰가와 공고 상태, 개찰 순위를 공고번호로 조회합니다. 인증·한도·오류 형식은 공통 규칙을 따릅니다.
기본 주소
https://api.dima.tools/g2b/v1
키 1개는 고객사(사업자번호) 1곳에 묶입니다. 요청에 사업자번호를 넣는 파라미터는 없고, 키가 고객사를 정합니다.
POST /requests
공고 하나에 요청 항목 여러 개를 함께 보냅니다. 항목마다 결과가 따로 나오고, 한 항목이 실패해도 나머지 결과는 나옵니다.
POST /g2b/v1/requests
{
"bid_ntce_no": "R26BK00000000",
"bid_ntce_ord": "000",
"items": ["price_unlock", "notice_status", "opening_result"]
}
| 필드 | 필수 | 설명 |
|---|---|---|
bid_ntce_no | 예 | 나라장터 공고번호 |
bid_ntce_ord | 아니요 | 공고 차수. 빼면 최신 차수 |
items | 예 | 요청 항목 배열. 모르는 항목이 있으면 400 unknown_item |
{
"bid_ntce_no": "R26BK00000000",
"bid_ntce_ord": "000",
"results": {
"price_unlock": { "state": "ok", "premium_price": 1234567890, "...": "..." },
"notice_status": { "state": "ok", "status": "open", "...": "..." }
},
"generated_at": "2026-11-11T10:00:00+09:00"
}
요청 항목
| 항목 | 내용 | 범위 | 언락 집계 |
|---|---|---|---|
price_unlock | 고객사 전용 입찰가 | 고객사 투찰 가능 범위 + 요청으로 추가한 공고 | 집계 |
notice_status | 현재 공고 상태와 공고 정보 | 제한 없음 | 안 함 |
opening_result | 개찰 결과와 순위 | 고객사 순위는 그 고객사 것만 | 안 함 |
price_unlock
- 같은 공고를 다시 요청하면 새 언락으로 세지 않고 현재 저장값을 냅니다. 재발행으로 바뀌었으면 바뀐 값입니다.
- 범위 밖 공고는 일반 예측가로 대신 채우지 않습니다. 실제로 투찰하는 범위 밖 공고는 콘솔에서 제공을 요청할 수 있습니다.
| 필드 | 설명 |
|---|---|
state | ok 또는 아래 이유 코드 |
premium_price | 전용 입찰가(원) |
premium_value_type | 금액 기준 |
premium_updated_at | 가격이 확정된 시각. 재발행이면 재발행 시각, 아직 확정 전이면 null |
unlocked_at | 이 고객사가 처음 언락한 시각 |
first_unlock | 이번 요청이 첫 언락인지 |
included_by_request | 범위 밖 요청으로 추가된 공고인지 |
| state | 뜻 |
|---|---|
not_target | 고객사 투찰 가능 범위 밖 |
out_of_engine_scope | 전용 모델 대상이 아닌 공고. 협상에 의한 계약·최저가 낙찰처럼 입찰가를 계산하지 않는 낙찰 방식 포함 |
not_computed | 그 밖에 계산 결과가 없는 공고 |
closed | 마감 뒤 첫 요청. 마감 전에 언락한 공고는 계속 나옵니다. |
pending | 계산 중. 잠시 뒤 다시 요청 |
company_preparing | 고객사 모델 준비 중 |
notice_status
| status | 뜻 |
|---|---|
open | 공고중 |
closed | 마감, 개찰 전 |
opened | 개찰 완료 |
failed | 유찰 |
cancelled | 취소 공고 |
superseded | 정정으로 새 차수가 있음(latest_ord) |
함께 나오는 필드: latest_ord progress title agency demand_agency bsns_div contract_method bid_method bid_close_at opening_at base_amount estimated_price floor_rate region_limited region_names industry_limited industry_names source_url detail_url no_bid_reason rebid_reason
opening_result
개찰 전이면 {"state":"not_opened"}만 나옵니다.
{
"state": "ok",
"board": {
"participants": 412, "reserve_price": 1250000000, "floor_rate": 87.745,
"opened_at": "2026-11-11T11:00:00+09:00", "result": "개찰완료",
"rank1": { "corp_name": "…", "bizno": "…", "amount": 1095000000, "rate": 87.6 }
},
"customer": { "bid_found": true, "rank": 7, "amount": 1095100000, "rate": 87.608,
"disqualified_reason": null, "won": false },
"premium": { "premium_price": 1095050000, "rank": 5, "total_bidders": 413,
"below_floor": false, "below_floor_by": null, "floor_amount": 1094900000,
"floor_unreliable": false, "diff_from_rank1": 50000 }
}
customer.bid_found: false는 개찰 명단에서 고객사를 찾지 못했다는 뜻입니다.premium은 마감 전에 언락한 전용가가 있을 때만 나오고, 없으면{"available": false}입니다.
GET /company
이 키의 고객사 상호·사업자번호·상태.
GET /notices
이 키 고객사의 AI 공고필터에 맞는 진행 중 나라장터 공고 목록입니다. 디마툴즈 AI입찰 웹의 AI 공고필터 목록과 같은 조건이고, 5분마다 새로 반영됩니다. 마감이 가까운 순서로 페이지당 20건이 나옵니다.
| 파라미터 | 설명 |
|---|---|
page | 페이지 번호. 빼면 1 |
GET /g2b/v1/notices?page=1
{
"state": "ok",
"items": [
{ "bid_ntce_no": "R26BK00000000", "bid_ntce_ord": "000",
"title": "○○ 설계용역", "agency": "○○시", "demand_agency": "○○시",
"bsns_div": "용역", "contract_method": "일반경쟁", "bid_method": "적격심사제",
"bid_close_at": "2026-11-17T10:00:00+09:00", "opening_at": "2026-11-17T11:00:00+09:00",
"base_amount": 244909803, "estimated_price": 227098182,
"premium_available": true }
],
"page": 1, "last_page": 1, "total": 17,
"refreshed_at": "2026-11-11T17:15:29+09:00",
"generated_at": "2026-11-11T17:16:00+09:00"
}
| 필드 | 설명 |
|---|---|
premium_available | price_unlock으로 전용 입찰가가 나오는 공고인지. 협상에 의한 계약·최저가 낙찰 공고는 false |
refreshed_at | 목록을 마지막으로 새로 반영한 시각 |
state | ok · preparing(목록을 만드는 중, 1분 안에 다시 요청) · no_filter(고객사의 AI 공고필터 조건이 없음) |
목록에는 금액 예측값을 싣지 않습니다. 전용 입찰가는 POST /requests의 price_unlock으로 공고마다 요청합니다.
GET /unlocked
이 키로 언락한 공고와 현재 전용가. 조회해도 서버 상태는 바뀌지 않습니다.
| 파라미터 | 설명 |
|---|---|
since | 시간대가 붙은 ISO 8601. 이 시각 뒤에 전용가가 새로 확정되거나 재발행된 공고만 |
cursor | 앞 응답의 next_cursor |
limit | 한 번에 받을 건수 |
GET /g2b/v1/unlocked?since=2026-11-11T09:00:00%2B09:00
{
"items": [
{ "bid_ntce_no": "R26BK00000000", "bid_ntce_ord": "000",
"unlocked_at": "2026-11-10T14:42:05+09:00", "premium_price": 1234567890,
"premium_price_state": "ok", "premium_updated_at": "2026-11-11T06:40:12+09:00" }
],
"next_cursor": null,
"generated_at": "2026-11-11T10:00:00+09:00"
}
GET /usage
이 키 고객사의 오늘·이번 달 호출 수, 오늘 오류 수, 언락 수(오늘·이번 달·전체), 호출 한도.
GET /health
상태 점검. 키가 필요 없습니다.
제품 오류
공통 오류에 더해 이 제품에서 나는 오류입니다.
| HTTP | code | 뜻 |
|---|---|---|
| 400 | unknown_item | 알 수 없는 요청 항목 |
| 403 | company_preparing | 고객사 모델 준비 중 |
| 403 | company_suspended | 고객사 제공 중지 |
| 404 | not_found | 없는 공고번호 |