Guides / Errors

Errors

Errors come as an HTTP status code plus error.code in the JSON body. Branch on code. The message is a human-readable English sentence and may change; the tables on this page explain each code.

Response format

http
HTTP/2 403
content-type: application/json

{
  "error": {
    "code": "PLAN_REQUIRED",
    "message": "This endpoint requires the Enterprise plan. Contact: help@alpsoft.io",
    "docs": "https://openapi.chickstockfi.com/docs"
  }
}
  • code: an upper-case code from the tables below. Use it for program logic.
  • message: an English sentence describing the cause and what to do. Write it to your logs; in your own UI, show your own text chosen by code.
  • docs: a link to related documentation. Some responses omit it.

When a query parameter fails validation (for example, limit out of range), the API returns 400 BAD_REQUEST in the same shape; message names the field and the reason.

Empty-body 400

An unencoded non-ASCII query value (such as Korean text) can be rejected at the edge, before it reaches the API, with an empty-body 400. That response has no error object. URL-encode query values (curl -G --data-urlencode "account=매출액") or use English codes (account=revenue, period=FY2025).

Data API codes

Data API error codes
StatusCodeMeaningWhat to do
400BAD_SYMBOLThe symbol format is invalidUse a 6-digit Korean code (for example 005930). News also accepts alphanumeric tickers of 1–12 characters.
Samsung Electronics · 005930
400BAD_IDThe receipt number or article ID format is invalidFilings take the 14-digit receipt number; articles take the id from a response as is.
400BAD_QUERYThe search term is missingPass q to the search endpoint.
400BAD_DATEThe date is malformed or does not existSend a real calendar date in YYYY-MM-DD format. The message identifies the invalid parameter.
400BAD_PERIODThe period is not in a supported formatFinancials: FY2025, 2026Q3, 2025H1, latest_quarter. Consensus and guidance: 2026Q3, FY2026, last, next. The message lists the accepted forms.
400BAD_REQUESTA required condition is missingFor example, /clinical-trials needs symbol or sponsor.
400UNSUPPORTED_MARKETThe symbol is in an unsupported marketBriefings support KOSPI and KOSDAQ stocks and ETFs only.
400BAD_CURSORThe cursor is malformed or came from different filtersSend next_cursor from the previous response unchanged, with the same filters. After changing filters, start without a cursor.
400MARKET_NOT_AVAILABLEThe market is not available yet (Japan, China)Only Korea (KR) and US data are available today.
401UNAUTHORIZEDNo key, or the key is not in the Data API format (ck_live_)Check the header. PRO API keys do not work on the Data API.
401INVALID_KEYThe key does not exist or has been revokedCheck your active keys in the console and create a new one if needed.
401KEY_EXPIREDThe API docs session key (ck_docs_) has expiredGet a new one in the API docs while logged in, or use your own key. Docs session keys last at most 60 minutes.
403PLAN_REQUIREDThe endpoint needs a paid tier (Launch · Business · Scale · Enterprise) or a PoCThe key is a free trial key, or the paid-tier term ended and the account fell back to Free. Check your contract status or contact sales.
403MARKET_NOT_ENTITLEDThe market is not on your contractCheck markets on GET /key. To add a market, contact help@alpsoft.io. The request is not counted against your limits.
403POC_ENDEDThe PoC period has ended and the account is stoppedEvery key gets the same response. For an extension or a full contract, contact help@alpsoft.io. Once extended, the same keys work again.
403READ_ONLY_KEYAn API docs session key was used for a non-GET requestDocs session keys call GET endpoints only. Send POST /query and similar requests with your own key.
403FEATURE_DISABLEDThe endpoint is discontinuedIt stays open only to keys under existing contracts. See the reference for the replacement endpoint.
404SYMBOL_NOT_FOUNDPhoenix AI does not know this symbolThe format is valid but it is not a listed symbol. Check the code or ticker. If the company exists but has no data, the code is NOT_FOUND.
404NOT_APPLICABLEThis data does not apply to the security typeFund-type products such as ETFs and ETNs have no company financials, metrics, consensus and so on. News and filings still work.
404NOT_FOUNDThe company exists but the requested data (account, period …) is not availableCheck the code or ID. Do not repeat the same request.
404NO_HISTORYNo stored briefing for that datePast dates return stored briefings only. Leave date empty to get today’s briefing.
429RATE_LIMITEDPer-minute limit exceededWait Retry-After seconds, then retry.
429QUOTA_EXCEEDEDDaily quota used upRetry after 00:00 KST.
429AI_QUOTA_EXCEEDEDYour tier’s daily AI call limit is used upRetry after Retry-After (until 00:00 KST). Regular data calls keep working.
429AI_MONTHLY_QUOTA_EXCEEDEDThe contracted monthly AI call limit is used upRetry after Retry-After (until the next cycle or the plan end). Regular data calls keep working.
500INTERNALInternal server errorRetry after a short while. Contact us if it persists.
503UNAVAILABLETemporarily unable to process the requestRetry after a short while with backoff.

PRO API codes

PRO API error codes
StatusCodeMeaningWhat to do
400BAD_REQUEST · BAD_SYMBOLInvalid parameter or symbol formatCheck the format in the reference (14-digit receipt numbers, 6-digit Korean codes or US tickers).
401UNAUTHORIZEDNo key, or the key is not in the PRO API format (ck_pers_)Check the header.
401WRONG_KEY_SCOPEA Data API key (ck_live_) or an API docs session key (ck_docs_) was used on the PRO APICreate a PRO API key in the console and use it. MCP also accepts Data API keys, which open only the Data API tools; the error docs link points to the MCP guide (/docs/mcp).
401INVALID_KEYThe key does not exist or has been revokedCheck your active keys.
402BUDGET_EXCEEDEDThe monthly AI spend cap has been reachedStored summaries remain available. The cap reopens next month; contact us to raise it.
403PLAN_REQUIREDThe account has no PRO planRetry once a PRO plan is applied to the account.
403PLAN_EXPIREDThe plan term has endedRenew the plan.
403PLAN_NOT_STARTEDThe plan has not started yetCall after the start time given in the message.
403PLAN_INACTIVEThe plan is suspended or cancelledContact us.
400 · 403MARKET_NOT_AVAILABLE · MARKET_NOT_ENTITLEDMarket not available yet (Japan, China) · market not on your contractCheck markets on /me. MCP tools answer with a tool error carrying the same code.
403POC_ENDEDThe account’s PoC period has endedRequests stop even if a PRO API plan is still active. Contact us about an extension or a full contract.
403PRODUCT_REQUIREDThe plan lacks the product this endpoint needs (Data or Ask)Switch to Bundle or to the required product.
403PRO_ACCESS_REQUIREDThe account does not have access to questionsContact us.
404NOT_FOUNDNo data foundCheck the code or receipt number.
409ASK_IN_PROGRESSA question is already being processed (one at a time per account)Get the result for the running job_id before asking a new question.
429RATE_LIMITEDPer-second limit exceededWait Retry-After seconds.
429DAILY_QUOTA_EXCEEDEDDaily call quota used upReopens at 00:00 KST (Retry-After included).
429SUMMARY_DAILY_LIMITToday’s AI filing summary generation limit is used upStored summaries remain available (generate=false).
429ASK_DAILY_LIMITToday’s question limit is used up (including web PRO)Ask again after 00:00 KST.
429AI_QUOTA_EXCEEDEDThe account’s daily AI call limit is used upQuestions and summary generation reopen at 00:00 KST (Retry-After included).
429AI_MONTHLY_QUOTA_EXCEEDEDThe account’s monthly AI call limit is used upQuestions and summary generation reopen at the next cycle or the plan end (Retry-After included).
503UNAVAILABLETemporarily unable to process the requestRetry after a short while.

When an MCP tool call hits a limit, the error comes back as a tool result with isError set instead of an HTTP error, carrying the same code. See MCP for details.