Ablecity Manse-force API Reference
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.
Developer documentation for integrating Manse-force, Saju, compatibility, naming and visual fortune APIs into apps and web services. This page explains authentication, request parameters, JSON response structure, v2 add-on APIs, callback flows, error codes, rate limits and API key onboarding.
200+
Global Partners
Dec 2025
Since Launch
0
Critical Errors
Live
SSEHADA Engine
200+ counts paying customers with active monthly subscriptions; test-key users are excluded. UptimeRobot-monitored endpoints recorded uninterrupted uptime during the monitored period since the December 2025 launch. Zero critical errors refers to internal operational records for that period. Availability, support hours and incident response scope are defined in the contract-specific SLA.
Manse-force & Saju API v2 integration standard
- This documentation is v2-only. New test keys and production keys are issued for
/api/v2/...paths. - Synchronous endpoints return JSON immediately. Asynchronous analysis endpoints use
POSTplusX-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
Make the first successful call in five minutes
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
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.
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
Content: 100 calls; Core/Professional + SIS combined: 1,000 calls; standard results: 20; completed callback results: 5. Access is limited to approved products and evaluation scope, with no production or commercial use. 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 is 90P/result for Content and Core, and 150P/result for Professional + SIS. 1P = KRW 1, excluding VAT. See Pricing for separate monthly subscriptions and completed-result rates.
After a product allowance is exhausted, overage is automatically deducted from the shared balance at PAYG rates: Content/Core 90P per result; Professional + SIS 150P per result. Overage requests are restricted when the balance is insufficient for that request.
After API key issuance, register in the Dashboard to review usage and top up points.
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 enquiries. Their planned synchronous response does not change existing callback endpoints into synchronous APIs.
Internal testing · approval-based PoC enquiries
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.
| Product | Path | Status |
|---|---|---|
| Standard interpretations | /api/v2/saju/fortune/standard/{product} | Planned path · subject to change · unavailable for general calls |
| Tojeong yearly reading | /api/v2/saju/fortune/tojeong | Planned path · subject to change · unavailable for general calls |
| Personalized date selection | /api/v2/saju/fortune/request-analysis/date-selection | Planned path · subject to change · unavailable for general calls |
| Standard / premium naming Internal testing · approval-based PoC enquiries | /api/v2/saju/fortune/request-analysis/naming | Existing path retained · internal testing · approval required |
| Daily star-sign fortune | /api/v2/saju/fortune/star-sign-luck | Planned path · subject to change · unavailable for general calls |
| Biorhythm | /api/v2/saju/fortune/biorhythm | Planned 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.
| Area | Common risk | Ablecity standard |
|---|---|---|
| Response structure | Mixed HTML or text | REST JSON envelope |
| Usage control | No key-level visibility | Key-based request and monthly usage tracking |
| Domain fields | Only final text output | Structured chart, elements, relations, void branches and approved SIS fields |
| Integration mode | Synchronous calls only | Synchronous GET + asynchronous POST/callback |
| Support | General inquiry only | Contract-defined SLA option |
4. GET /api/v2/saju/fortune
Current StandardCalculates 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.
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.
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,datastructure 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_uiandgongmang. - 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
| Name | Type | Required | Description |
|---|---|---|---|
| birth | string | Yes | Birth datetime in YYYY-MM-DDTHH:mm:ss format. |
| gender | string | Yes | male or female. |
| city | string | Optional | Birth city for local mean time correction. If omitted, Seoul is used as the default basis. |
| midnightType | integer | Optional | 0: split late/early midnight, default. 1: treat 23:00-00:59 as next-day midnight branch. |
| calendar | string | Optional | solar, 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-flowreturn immediately. - POST:
/fortune/request-analysis/...returns an accepted response first and sends final content toX-Callback-URL. - CHECK: Compatibility, naming and image modules use distinct payload shapes.
| Method | Endpoint | Use |
|---|---|---|
| GET | /api/v2/saju/fortune/daily | Daily fortune |
| GET | /api/v2/saju/fortune/zodiac-luck | Daily zodiac-style luck |
| GET | /api/v2/saju/fortune/luck-flow | Major, yearly and monthly flow data |
| POST | /api/v2/saju/fortune/request-analysis/this-year-luck | This-year fortune, callback required |
| POST | /api/v2/saju/fortune/request-analysis/telling | Traditional Saju reading, callback required |
| POST | /api/v2/saju/fortune/request-analysis/match | Two-person compatibility, callback required |
| POST | /api/v2/saju/fortune/request-analysis/week-luck | Weekly fortune, callback required |
| POST | /api/v2/saju/fortune/request-analysis/love-luck | This-year love luck, callback required |
| POST | /api/v2/saju/fortune/request-analysis/rich-luck | This-year wealth luck, callback required |
| POST Internal testing · approval-based PoC enquiries | /api/v2/saju/fortune/request-analysis/naming | Naming recommendation and interpretation, callback required |
| POST | /api/v2/saju/fortune/request-analysis/face | Face image analysis, callback required |
| POST | /api/v2/saju/fortune/request-analysis/palmistry | Palm 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
| Field | Required | Description |
|---|---|---|
| male | Yes | Birth-data object for the male user or first person. |
| female | Yes | Birth-data object for the female user or second person. |
| birth | Yes | YYYY-MM-DDTHH:mm:ss birth datetime. |
| gender | Yes | male or female. |
| midnightType | Yes | Midnight handling. Start with 0 for standard integration. |
| city | Yes | Birth city, such as 서울특별시 or 태안군. |
| calendar | Yes | solar 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
maleandfemalekeys. - Send
Content-Type: application/jsonwhen 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 page9. Error codes
| HTTP | Code | Description |
|---|---|---|
| 400 | INVALID_REQUEST | Malformed request or missing required fields. |
| 401 | UNAUTHORIZED | Authentication failed or token expired. |
| 404 | NOT_FOUND | Requested resource or endpoint was not found. |
| 429 | RATE_LIMIT | Request limit exceeded. |
| 500 | SERVER_ERROR | Internal 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 formatgender 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?
200+ counts paying customers with active monthly subscriptions; test-key users are excluded. UptimeRobot-monitored endpoints recorded uninterrupted uptime during the monitored period since the December 2025 launch. Zero critical errors refers to internal operational records for that period. Availability, support hours and incident response scope are defined in the contract-specific SLA.
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?
Content: 100 calls; Core/Professional + SIS combined: 1,000 calls; standard results: 20; completed callback results: 5. Access is limited to approved products and evaluation scope, with no production or commercial use. Internal-test products require separate scope approval.
PAYG is 90P/result for Content and Core, and 150P/result for Professional + SIS. 1P = KRW 1, excluding VAT. See Pricing for separate monthly subscriptions and completed-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.
Content: 100 calls; Core/Professional + SIS combined: 1,000 calls; standard results: 20; completed callback results: 5. Access is limited to approved products and evaluation scope, with no production or commercial use. 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.