CorpSecTech API
Registry-event middleware for corporate secretaries. Base URL https://api.openedd.com. JSON in, JSON out. Version 5 — Singapore and Hong Kong live. Every path is jurisdiction-scoped: /v1/sg/… for Singapore (ACRA), /v1/hk/… for Hong Kong (Companies Registry).
Authentication
Send your key in the X-API-Key header. Keys are issued per firm (client) and stored only as a SHA-256 hash. Request one at hello@openedd.com.
curl -H "X-API-Key: oe_live_…" "https://api.openedd.com/v1/sg/check?uen=201836081W"
Quotas and errors
Each key has a daily quota (Developer 10; Professional 10,000; Platform per contract) and paid keys have a daily export cap on rows returned by bulk check and the daily feed. Every response carries X-RateLimit-Limit and X-RateLimit-Used. Errors are JSON with an error field: 401 missing, invalid or suspended key, 403 endpoint not on your plan, 422 bad input (for example an invalid UEN), 429 quota or export cap reached, 500 unexpected.
Statuses and the traffic light
| status | risk | Meaning |
|---|---|---|
| GAZETTED_FIRST | watch | In the ACRA First Gazette; will be struck off 60 days after publication unless an objection is lodged. objection_deadline is returned. |
| STRUCK_OFF | critical | Final Gazette: struck off with effect from struck_off_date. |
| WITHDRAWN | none | The striking-off application was withdrawn; entity remains on the register. |
| RESTORED | none | Restored to the register after having been struck off. |
| NOT_GAZETTED | none | No gazette notice on record for this UEN (2016 to data_as_of). |
GAZETTED_FIRST; the full history is always in timeline.Check one entity
Returns the entity's current status, dates, deadline, explanation and the complete event timeline. On Professional and Platform plans each timeline entry also carries source_url and notice_label (the official source reference); Developer keys receive the events and dates only.
{
"uen": "201836081W", "found": true, "entity_name": "GULIVR PTE. LTD.", "entity_type": "COMPANY",
"status": "GAZETTED_FIRST", "risk": "watch", "status_date": "2026-07-26",
"first_gazette_date": "2026-07-26", "struck_off_date": null, "withdrawn_date": null, "restored_date": null,
"objection_deadline": "2026-09-24",
"explanation": "Listed in the ACRA First Gazette on 2026-07-26: the entity will be struck off 60 days after publication unless an objection is lodged or the application is withdrawn.",
"timeline": [ { "kind": "first", "publication_date": "2026-07-26", "struck_off_date": null, "event_date": null,
"notice_label": "…", "source_url": "…" /* Professional and Platform only */ } ],
"data_as_of": "2026-09-02T12:18:19+00:00"
}
Bulk check (portfolio sweep)
Professional and Platform. Body {"uens": ["201836081W", "197200737R"]}, up to 500 UENs per call (configurable per contract). Returns an array in the same shape as a single check. Invalid UENs come back with status: null and an explanation rather than failing the batch. Rows count toward the daily export cap.
Search by name
Fuzzy search over gazetted entity names (minimum 3 characters). Returns uen, entity_name, status, status_date. Developer keys get up to 5 results, paid keys up to 100. Only entities that appear in a gazette are searchable.
Daily feed
Professional and Platform. Every entity gazetted in a date range. kind is first, final, withdrawn or restored. Use it to build your own screens or to load a month into a spreadsheet. Rows count toward the daily export cap.
Watchlist
Register the UENs your firm administers once. POST accepts {"uens": ["201836081W", {"uen": "202603696G", "label": "Client B"}]} (up to 5,000 per call, upsert). GET returns the list with each entity's current status. events lists gazette events on the watchlist since a date that have not yet been alerted.
Alerts
Alerts run automatically every morning at 07:30 Singapore time after the ACRA sync and go to the firm's alert email and webhook (set when the key is issued). Each event is alerted once. Call this endpoint to preview (dry_run=1) or send now. Webhook payload: {"subject": "...", "events": [ { uen, entity_name, kind, event_date, deadline, source_url, label } ]}.
Evidence pack (PDF)
Professional and Platform. Returns application/pdf: entity, status, explanation, deadline, every event with its official source reference and file hash, data_as_of, generation time and your firm's name. File it in the CDD record as proof of the check you ran.
Entity profile and annual-return deadline
Professional and Platform. The registry profile for any of the ~2.1 million registered entities (not only gazetted ones): ACRA status, entity and company type, registration date, registered address, principal activity (SSIC), officer count, former names, last annual return filed and next_annual_return_due with days_to_annual_return_due and annual_return_overdue. The same block is returned as profile inside every /v1/sg/check response.
{ "uen": "192600019W", "found": true,
"profile": { "entity_name": "PRICEWATERHOUSECOOPERS CM SERVICES PTE. LTD.", "acra_status": "Live Company",
"entity_type": "Local Company", "registration_date": "1926-06-22",
"primary_ssic_code": "70201", "primary_ssic": "COMPANY SECRETARIAL, PAYROLL AND ACCOUNTING AND BOOK-KEEPING SERVICES",
"last_annual_return_filed": "2026-02-24", "next_annual_return_due": "2027-01-30",
"days_to_annual_return_due": 150, "annual_return_overdue": false, "profile_as_of": "2026-09-02T16:59:04Z" } }
Watchlist deadlines
Every live entity on your watchlist whose annual return is due within days (or already overdue), soonest first. The Monday morning alert includes the 14-day view automatically.
Stats
Counts of entities, events and notices plus last_pipeline_run. Use it for a "data current as of" badge.
Hong Kong (Companies Registry)
Company Registry striking-off, deregistration and restoration notices from the HKSAR Government Gazette, under the Companies Ordinance (Cap. 622) Part 15. Companies are identified by their 8-digit CR number (Companies Registry number), passed as cr. Same auth, quotas, plan gating and error shape as the Singapore endpoints.
source_url and a document hash, never the document text. Verify at the source link or with the Companies Registry.| status | risk | Meaning (Cap. 622) |
|---|---|---|
| GAZETTED_FIRST | high | Notice of intention to strike off (s.744/745). Dissolved 3 months after publication unless cause is shown. objection_deadline is returned. |
| DEREGISTRATION_PROPOSED | high | Deregistration applied for (s.751(1)). 3-month objection window from publication. |
| STRUCK_OFF | critical | Struck off and dissolved (s.746/747). |
| DEREGISTERED | critical | Deregistered on the company's own application and dissolved (s.751(3)). |
| RESTORED | medium | Restored to the Companies Register. |
| NOT_GAZETTED | none | No striking-off, deregistration or restoration notice on record for this CR number. |
Check one company
Current status, dates, deadline, explanation and the full event timeline. Professional and Platform responses add statutory_section, source_url, document_sha256 and document_bytes per event; the Chinese company name is returned as entity_name_zh when known.
{
"cr": "71094901", "jurisdiction": "HK", "found": true,
"entity_name": "AP GARDEN LIMITED", "entity_name_zh": null,
"status": "DEREGISTERED", "risk": "critical",
"deregistered_date": "2026-08-28", "objection_deadline": null,
"explanation": "Deregistered on the company's own application with effect from 2026-08-28, and dissolved on deregistration. Cap. 622 s.751(3) …",
"timeline": [ { "kind": "deregistered", "kind_label": "Deregistered and dissolved", "event_date": "2026-08-28",
"statutory_section": "Cap. 622 s.751", "source_url": "…" /* Professional and Platform only */ } ],
"notice_count": 1, "data_as_of": "2026-08-28T…",
"source": "Companies Registry notices in the HKSAR Government Gazette"
}
Bulk check
Professional and Platform. Body {"crs": ["71094901", "07186083"]}, up to your plan's bulk limit. Returns an array in the same shape as a single check. Rows count toward the daily export cap.
Search by name
Search over Hong Kong company names, English and Chinese (minimum 3 characters). Returns cr, entity_name, entity_name_zh, status, status_date.
Daily feed
Professional and Platform. Every company gazetted in a date range. kind is first, struck_off, dereg_proposed, deregistered or restored. Rows count toward the daily export cap.
Stats
Counts of Hong Kong companies and notices plus the last pipeline run.
Jurisdictions
No key required. Lists the jurisdictions that are live and on the roadmap, the events each registry emits, and whether documents are stored or facts-only. Use it to discover coverage programmatically.
Public check (no key)
Powers the search box on corpsectech.com. Browser-verified (Cloudflare Turnstile), rate-limited per IP. Returns a teaser only: gazette status, risk, entity name and the latest event. The objection deadline, ACRA/registry detail, full timeline and source references require an API key. Not for integrations; use a key.
Google Sheets
Add the function below in Extensions → Apps Script, set your key, then use =CORPSEC_STATUS(A2) in any cell. It returns status | risk | date | deadline.
const KEY = "oe_live_…";
function CORPSEC_STATUS(uen) {
if (!uen) return "";
const r = UrlFetchApp.fetch("https://api.openedd.com/v1/sg/check?uen=" + encodeURIComponent(String(uen).trim()),
{ headers: { "X-API-Key": KEY }, muteHttpExceptions: true });
const d = JSON.parse(r.getContentText());
if (d.error) return "ERROR: " + d.error;
return [d.status, d.risk, d.status_date || "", d.objection_deadline || ""].join(" | ");
}
Plans
| Plan | Calls / day | Endpoints | Source documents |
|---|---|---|---|
| Developer (free) | 10 | check, search (5 results), stats | No |
| Professional | 10,000 | All: bulk, feed, entity, watchlist, deadlines, alerts, evidence | Yes — source reference and file hash on every event |
| Platform | Per contract | All, plus higher bulk and export caps, white-label | Yes |
Upgrade or request a key at hello@openedd.com. Use of the API is subject to the API terms: results are licensed for your firm's own compliance work and may not be redistributed or used to build a competing dataset.
Provenance
Every event is taken from the official record, verified against the register's own figures and stored with a file hash so it can be re-checked later; the verification result is recorded per source document. Coverage: companies, LLPs, VCCs, VCC sub-funds and foreign branches from 2016 to today, refreshed daily. Professional and Platform responses carry the source reference and hash; the public search and Developer keys carry status and dates only. The data is a monitoring aid and does not replace an ACRA BizFile extract. Facts are deterministic; no status or deadline is generated by AI.
CorpSecTech is an Openedd brand · openedd.com · hello@openedd.com