Skip to main content
ABLECITY
Menu
Product guide v5.0 · Revised 2026.10.12 · API v2

Saju API documentation.

v5.0 Sandbox available now · New paid pricing planned for December 1, 2026

Product terms follow the Korean customer guide v5.0 revised October 12, 2026. New customers can apply now for an approval-based Sandbox under the v5.0 product scope and test terms. New paid sign-ups are on hold before December 1, 2026. New paid rates are planned for December 1, 2026; the existing pricing plans are closed to new sign-ups. Existing customers follow their individual contracts and receive separate transition guidance. API paths and request/response examples in this technical document remain based on v2.

API product guide v5.0 · English PDF

The product introduction is document v5.0. Actual API URLs remain under the existing /api/v2/ paths; the document version is separate from the API version.

Read the authentication, request parameters, JSON responses, callbacks, errors and usage limits for API integration. Confirm approved products and access conditions before calling an endpoint; naming and professional astrology products remain in internal testing and require an approved PoC.

Availability, support hours and incident response scope are defined in the contract-specific SLA.

Manse-force & Saju API v2 integration standard

  • The API endpoints in this guide use v2. New test keys and production keys are issued for /api/v2/... paths.
  • Synchronous endpoints return JSON immediately. Asynchronous analysis endpoints use POST plus X-Callback-URL.
  • Compatibility, naming and image-based analysis have different payload shapes. Copy the example key names exactly.
  • v1 paths are expired and are intentionally not documented.

Quick Start

Start with the base GET request.

Start with a server-side API key, call the base Manse-force endpoint with GET, then use POST + callback for long-running analysis such as compatibility, naming or yearly wealth/love readings.

1. Prepare the API key

Every request uses Authorization: Bearer <API_KEY>. After key issuance, key holders can register in the API Dashboard to review usage, subscription status and API lookups.

2. Use GET for single lookup

The base Saju endpoint returns JSON immediately for chart and structured public fields.

3. Use callback for analysis

Compatibility, naming, wealth/love/yearly readings and image-based modules are accepted first and delivered to your callback endpoint.

Base Manse-force lookup

curl -X GET \
  "https://api.ablecity.kr/api/v2/saju/fortune?birth=1990-01-01T01:00:00&gender=male&city=Seoul&calendar=solar&midnightType=0" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Accept: application/json"

Fortune API Platform

Product scope and key permissions

The following describes the v5.0 product data scope. Manse-force Core (Four Pillars/Saju Data) returns calculation data: chart, Five Elements, Ten Gods, Twelve Stages and major luck cycles. Professional Manse-force + SIS adds strength, chart pattern, favourable elements, branch relationships, void branches and position, status and impact data for 54 Shinsal indicators. Existing customers receive a separate transition review comparing their current contract and the new product data. Professional fields in an existing Core contract are reviewed separately from the fields included in the new Core product.

Both products use the existing GET /api/v2/saju/fortune endpoint; API key permissions determine the available scope. The combined field reference and response examples below describe approved permissions and do not mean every professional field is included in Core. SIS intensity is an internal relative index, not a statistical probability.

Fortune API Platform

30-day approval-based Sandbox

New customers can apply now for an approval-based v5.0 Sandbox. The 30-day allowances are Content: 100 calls; Core/Professional + SIS combined: 1,000 calls; standard results combined: 20; completed generative Callback results: 5. New paid sign-ups are on hold before December 1, 2026. Sandbox access is for testing and cannot be used commercially or provided to end users. Confirm the actual period, products and limits in the approved key issuance notice. Internal-test products require separate scope approval.

We email the initial review outcome and issuance scope within one business day of submission. API keys are issued separately by email for approved products and usage only.

PAYG rates planned for December 1, 2026 are Content & Retention: 20P/result; Manse-force Core: 90P/result; Professional + SIS: 150P/result. 1P = KRW 1, excluding VAT, for the standard Korean scope. Starter includes 500 results per month at KRW 30,000 for Core or KRW 50,000 for Professional + SIS. Professional + SIS Launch includes 2,000 results at KRW 89,000 per month. See Pricing for the full plans and interpretation/result rates.

Overage rates, usage limits, allowance rollover, plan change and termination dates, payment dates and prorating are agreed in the quote and contract before Live key issuance. The listed PAYG rates do not automatically become subscription overage rates.

After receiving a Sandbox key, register in the Dashboard to review usage. New paid sign-ups are on hold before December 1, 2026; receiving a Sandbox key does not start a paid account or point top-ups. Top-ups and paid use are handled at the paid access stage. Existing paid customers continue under their current contracts.

Pricing, subscriptions and refunds

A Sandbox key does not automatically become a Live key. Before production or access by end users, confirm the APIs, pricing, integration screens, expected volume and launch date, then obtain a separate Live key.

Fortune API Platform

Existing APIs and internal-test products

Existing custom interpretations retain the current POST + callback contract. Standard interpretations are in internal testing, with approval-based PoC inquiries. Their planned synchronous response does not change existing callback endpoints into synchronous APIs.

Internal testing · approval-based PoC inquiries

The following paths are proposed product references, not executable public API examples. Actual paths, inputs and response scope are provided after approval. The existing naming path is retained, but naming products are marked as internal testing.

ProductPathStatus
Standard interpretations/api/v2/saju/fortune/standard/{product}Planned path · subject to change · unavailable for general calls
Tojeong yearly reading/api/v2/saju/fortune/tojeongPlanned path · subject to change · unavailable for general calls
Personalized date selection/api/v2/saju/fortune/request-analysis/date-selectionPlanned path · subject to change · unavailable for general calls
Standard / premium naming
Internal testing · approval-based PoC inquiries
/api/v2/saju/fortune/request-analysis/namingExisting path retained · internal testing · approval required
Daily star-sign fortune/api/v2/saju/fortune/star-sign-luckPlanned path · subject to change · unavailable for general calls
Biorhythm/api/v2/saju/fortune/biorhythmPlanned path · subject to change · unavailable for general calls

Planned standard-interpretation suffixes: week-luck, this-year-luck, telling, match, love-luck, rich-luck.

1. Authentication

All requests must include a Bearer token in the HTTP header. Keep keys server-side, avoid embedding them in client apps, and rotate keys when integration ownership changes.

Authorization: Bearer <API_KEY>

2. Common response format

Every endpoint returns a REST JSON envelope. Error responses keep the same top-level shape so client code can handle success and failure consistently.

{
  "status": "success",
  "message": "Request completed.",
  "data": {}
}

3. Operations

Ablecity API is designed for service integration, not only one-off calculation. Authentication, usage management, billing scope, monitoring and SLA options are considered together during onboarding.

AreaWhat to confirmAblecity standard
Response structureResponse envelope and error handlingREST JSON envelope
Usage controlUsage by key and billing periodKey-based request and monthly usage tracking
Domain fieldsFields included in the approved productStructured chart, elements, relations, void branches and approved SIS fields
Integration modeImmediate response or completed Callback resultSynchronous GET + asynchronous POST/callback
SupportSupport hours and incident response responsibilitiesContract-defined SLA option

4. GET /api/v2/saju/fortune

Current Standard

Calculates the public v2 Manse-force payload from birth datetime, gender, optional city, midnight handling and calendar type. Public fields cover Four Pillars chart data, five elements, major cycle data, zodiac compatibility, void branches and approved SIS-related structures when enabled for the key.

The following describes the v5.0 product data scope. Manse-force Core (Four Pillars/Saju Data) returns calculation data: chart, Five Elements, Ten Gods, Twelve Stages and major luck cycles. Professional Manse-force + SIS adds strength, chart pattern, favourable elements, branch relationships, void branches and position, status and impact data for 54 Shinsal indicators. Existing customers receive a separate transition review comparing their current contract and the new product data. Professional fields in an existing Core contract are reviewed separately from the fields included in the new Core product.

Both products use the existing GET /api/v2/saju/fortune endpoint; API key permissions determine the available scope. The combined field reference and response examples below describe approved permissions and do not mean every professional field is included in Core. SIS intensity is an internal relative index, not a statistical probability.

v2 usage note

  • All new keys are issued against GET /api/v2/saju/fortune.
  • The top-level status, message, data structure is stable for client processing.
  • Internal debug fields and proprietary decision logic are intentionally excluded from public documentation.

SIS add-on note

  • Base lookup does not expose the full SIS add-on by default.
  • Approved API keys may include fields such as sinsal, relations_ui and gongmang.
  • Only fields intended for production service integration are documented.

Code examples

curl -X GET \
  "https://api.ablecity.kr/api/v2/saju/fortune?birth=1990-01-01T01:00:00&gender=male&city=Seoul&calendar=solar&midnightType=0" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Accept: application/json"
import requests

url = "https://api.ablecity.kr/api/v2/saju/fortune"
params = {
    "birth": "1990-01-01T01:00:00",
    "gender": "male",
    "city": "Seoul",
    "calendar": "solar",
    "midnightType": 0,
}
headers = {"Authorization": "Bearer <API_KEY>"}
print(requests.get(url, params=params, headers=headers).json())
const axios = require("axios");

const res = await axios.get("https://api.ablecity.kr/api/v2/saju/fortune", {
  params: {
    birth: "1990-01-01T01:00:00",
    gender: "male",
    city: "Seoul",
    calendar: "solar",
    midnightType: 0
  },
  headers: { Authorization: "Bearer <API_KEY>" }
});
console.log(res.data);
OkHttpClient client = new OkHttpClient();

HttpUrl url = HttpUrl.parse("https://api.ablecity.kr/api/v2/saju/fortune").newBuilder()
    .addQueryParameter("birth", "1990-01-01T01:00:00")
    .addQueryParameter("gender", "male")
    .addQueryParameter("city", "Seoul")
    .addQueryParameter("calendar", "solar")
    .addQueryParameter("midnightType", "0")
    .build();

Request request = new Request.Builder()
    .url(url)
    .addHeader("Authorization", "Bearer <API_KEY>")
    .build();

Query parameters

NameTypeRequiredDescription
birthstringYesBirth datetime in YYYY-MM-DDTHH:mm:ss format. Use only uppercase T between the date and time; spaces and lowercase t are not accepted.
genderstringYesmale or female.
citystringOptionalBirth city for local mean time correction. If omitted, Seoul is used as the default basis.
midnightTypeintegerOptional0: split late/early midnight, default. 1: treat 23:00-00:59 as next-day midnight branch.
calendarstringOptionalsolar, lunar, or leap.
Supported city examples

Use Korean administrative names when available for the most precise production integration. Examples: 서울특별시, 부산광역시, 대구광역시, 인천광역시, 광주광역시, 대전광역시, 울산광역시, 세종특별자치시, 수원시, 고양시, 용인시, 성남시, 태안군. For overseas services, normalize the city value during onboarding.

5. Public response fields

The response exposes integration-facing fields. Internal scoring logic, private rule tables and debug fields are not included in public documentation.

{
  "status": "success",
  "message": "Request completed.",
  "data": {
    "saju": {
      "year": { "heaven": "庚", "earth": "午" },
      "month": { "heaven": "戊", "earth": "子" },
      "day": { "heaven": "丙", "earth": "寅" },
      "hour": { "heaven": "己", "earth": "丑" }
    },
    "five_elements": { "wood": 2, "fire": 2, "earth": 2, "metal": 1, "water": 1 },
    "ten_gods": [],
    "daeun": [],
    "gongmang": [],
    "zodiac_compat": [],
    "sinsal": []
  }
}

Chart fields

saju, heavenly stems, earthly branches and display-ready chart values used for Four Pillars screens.

Element and relation fields

five_elements, ten_gods and relationship structures support visual balance charts and relationship copy.

Cycle fields

daeun, yearly/monthly flow fields and luck-flow add-ons support time-series UX.

Approved SIS fields

sinsal, gongmang and relations_ui can be exposed only for approved API keys and integration scopes.

6. v2 add-ons and analysis APIs

In addition to the base Manse-force lookup, v2 provides daily luck, luck-flow and deeper analysis modules. Endpoints under fortune/request-analysis/ use POST + callback.

  • GET: /fortune, /daily, /zodiac-luck, /luck-flow return immediately.
  • POST: /fortune/request-analysis/... returns an accepted response first and sends final content to X-Callback-URL.
  • CHECK: Compatibility, naming and image modules use distinct payload shapes.
MethodEndpointUse
GET/api/v2/saju/fortune/dailyDaily fortune
GET/api/v2/saju/fortune/zodiac-luckDaily zodiac-style luck
GET/api/v2/saju/fortune/luck-flowMajor, yearly and monthly flow data
POST/api/v2/saju/fortune/request-analysis/this-year-luckThis-year fortune, callback required
POST/api/v2/saju/fortune/request-analysis/tellingTraditional Saju reading, callback required
POST/api/v2/saju/fortune/request-analysis/matchTwo-person compatibility, callback required
POST/api/v2/saju/fortune/request-analysis/week-luckWeekly fortune, callback required
POST/api/v2/saju/fortune/request-analysis/love-luckThis-year love luck, callback required
POST/api/v2/saju/fortune/request-analysis/rich-luckThis-year wealth luck, callback required
POST
Internal testing · approval-based PoC inquiries
/api/v2/saju/fortune/request-analysis/namingNaming recommendation and interpretation, callback required
POST/api/v2/saju/fortune/request-analysis/faceFace image analysis, callback required
POST/api/v2/saju/fortune/request-analysis/palmistryPalm image analysis, callback required

POST + Callback Recipe

7. Compatibility API example

The compatibility API is harder than a single-person chart lookup because it requires two nested objects: male and female. It also sends the final analysis to your callback URL rather than returning the full analysis immediately.

1. Prepare callback URL

Create an HTTPS endpoint that can receive the result payload.

2. Send match request

Send male, female and X-Callback-URL together.

3. Receive result

The first response confirms acceptance. The final result arrives by callback.

Complete cURL example

curl -X POST \
  "https://api.ablecity.kr/api/v2/saju/fortune/request-analysis/match" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "X-Callback-URL: https://your-server.com/webhook/saju-match" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "male": {
      "birth": "1999-04-10T00:30:00",
      "gender": "male",
      "midnightType": 0,
      "city": "서울특별시",
      "calendar": "solar"
    },
    "female": {
      "birth": "1998-03-10T00:10:00",
      "gender": "female",
      "midnightType": 0,
      "city": "태안군",
      "calendar": "solar"
    }
  }'

Payload fields

FieldRequiredDescription
maleYesBirth-data object for the male user or first person.
femaleYesBirth-data object for the female user or second person.
birthYesYYYY-MM-DDTHH:mm:ss birth datetime. Use only uppercase T between the date and time; spaces and lowercase t are not accepted.
genderYesmale or female.
midnightTypeYesMidnight handling. Start with 0 for standard integration.
cityYesBirth city, such as 서울특별시 or 태안군.
calendarYessolar for solar calendar.

Accepted response

{
  "status": "success",
  "message": "Analysis request accepted.",
  "data": {
    "request_id": "match_20260409_000001",
    "service": "match",
    "callback_status": "queued",
    "callback_url": "https://your-server.com/webhook/saju-match"
  }
}

Node.js callback receiver

app.post("/webhook/saju-match", express.json(), (req, res) => {
  console.log("Compatibility result:", req.body);
  res.status(200).json({ ok: true });
});

Callback result structure

{
  "request_id": "match_20260409_000001",
  "service": "match",
  "status": "success",
  "data": {
    "summary": "Relationship tendencies and complementary points.",
    "score": 82,
    "sections": [
      { "title": "Compatibility tendency", "content": "Explains relationship flow." },
      { "title": "Points to watch", "content": "Explains potential conflict points." }
    ]
  }
}

Common mistakes

  • Do not omit the colon in X-Callback-URL: https://....
  • Do not rename the male and female keys.
  • Send Content-Type: application/json when posting a JSON body.
  • Use an externally reachable HTTPS callback endpoint.

Generic POST/callback example

curl -X POST \
  "https://api.ablecity.kr/api/v2/saju/fortune/request-analysis/rich-luck" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "X-Callback-URL: https://your-server.com/webhook/result" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "birth": "1990-01-01T00:00:00",
    "gender": "male",
    "city": "서울특별시",
    "calendar": "solar",
    "midnightType": 0
  }'

8. Astrology API draft

A dedicated astrology API page is prepared for future expansion and is intentionally noindexed until the product contract is finalized. Use it as a planning surface, not as production documentation.

View draft page

9. Error codes

HTTPCodeDescription
400INVALID_REQUESTMalformed request or missing required fields.
401UNAUTHORIZEDAuthentication failed or token expired.
404NOT_FOUNDRequested resource or endpoint was not found.
429RATE_LIMITRequest limit exceeded.
500SERVER_ERRORInternal server error.

Common messages

  • Request completed.
  • Server processing error occurred.
  • Service not found.

Auth / rate messages

  • Invalid API Key.
  • Per-minute request limit exceeded.
  • Daily request limit exceeded.
  • Service is not allowed for this key.

Saju-specific messages

  • invalid birth date format: use YYYY-MM-DDTHH:mm:ss, with uppercase T only; spaces and lowercase t are not accepted.
  • gender must be 'male' or 'female'
  • invalid timezone

10. Rate limit

To keep the production service stable, request volume is limited per issued API key. Higher limits can be discussed based on business volume and contract scope.

Per Minute

60 requests

Per Day

50,000 requests

When a limit is exceeded, the API returns HTTP 429 Too Many Requests with a rate-limit related message.

The request frequency limits below are separate from the total Sandbox allowance. Products and limits follow the approved scope of the issued key.

11. FAQ

Which API version should I integrate?

Use the existing /api/v2/ paths. The product guide is document v5.0; document and API versions are separate. The guide version does not change the API endpoint paths.

Why is the compatibility API harder than base lookup?

It requires two nested birth-data objects, male and female, and the final analysis is delivered to X-Callback-URL.

What should I put in X-Callback-URL?

Use the HTTPS endpoint that will receive the analysis result, for example https://your-server.com/webhook/saju-match. Keep the header syntax as X-Callback-URL: https://....

How does pricing work?

New customers can apply now for an approval-based v5.0 Sandbox. The 30-day allowances are Content: 100 calls; Core/Professional + SIS combined: 1,000 calls; standard results combined: 20; completed generative Callback results: 5. New paid sign-ups are on hold before December 1, 2026. Sandbox access is for testing and cannot be used commercially or provided to end users. Confirm the actual period, products and limits in the approved key issuance notice. Internal-test products require separate scope approval.

PAYG rates planned for December 1, 2026 are Content & Retention: 20P/result; Manse-force Core: 90P/result; Professional + SIS: 150P/result. 1P = KRW 1, excluding VAT, for the standard Korean scope. Starter includes 500 results per month at KRW 30,000 for Core or KRW 50,000 for Professional + SIS. Professional + SIS Launch includes 2,000 results at KRW 89,000 per month. See Pricing for the full plans and interpretation/result rates.

Which languages can use the API?

Any language or platform with an HTTP client can integrate: Python, JavaScript/Node.js, Java, PHP, Go and more.

When should I use the API Dashboard?

After API key issuance, key holders can register at the API Dashboard to review usage, subscription state and API lookups.

How do I apply for Sandbox access?

We email the initial review outcome and issuance scope within one business day of submission. API keys are issued separately by email for approved products and usage only.

New customers can apply now for an approval-based v5.0 Sandbox. The 30-day allowances are Content: 100 calls; Core/Professional + SIS combined: 1,000 calls; standard results combined: 20; completed generative Callback results: 5. New paid sign-ups are on hold before December 1, 2026. Sandbox access is for testing and cannot be used commercially or provided to end users. Confirm the actual period, products and limits in the approved key issuance notice. Internal-test products require separate scope approval.

12. Support

Before integration, contact us by email. After key issuance, use the API Dashboard for usage, subscription and API lookup checks.

Operating conditions to confirm before integration

Review expected volume, response fields and error handling with samples, including callback receipt, deduplication and retries. Key permissions, support hours, incident response, data retention/deletion and version-change notices are defined during technical review and contracting.

Project scope / quote request