# SingaporeAPI: full catalogue

> Every API you need to build for Singapore, with auth guides, example requests, and agent notes.
> Machine endpoints: https://singaporeapi.com/api/apis (JSON) and https://singaporeapi.com/mcp (MCP, streamable HTTP).

## 2C2P Payment Platform API

- Page: https://singaporeapi.com/apis/2c2p
- Provider: 2C2P
- Category: Payments
- Auth: token
- Pricing: contact
- Base URL: https://sandbox-pgw.2c2p.com/payment/4.3
- Docs: https://developer.2c2p.com

Southeast Asia payments processor headquartered in Singapore, covering cards, QR payments and 250+ local payment methods across the region. Suited to merchants selling into multiple SEA markets.

### Auth guide

1. Contact 2C2P sales or sign up via developer.2c2p.com to get a sandbox merchant account.
2. Receive your merchantID and secret key.
3. Create a Payment Token by POSTing a signed JWT payload to /paymentToken.
4. Use the returned webPaymentUrl or continue API-only flows with the paymentToken.
5. Verify responses by validating the JWT signature with your secret.

### Example request

```
curl -X POST 'https://sandbox-pgw.2c2p.com/payment/4.3/paymentToken' -H 'Content-Type: application/json' -d '{"payload":"SIGNED_JWT"}'
```

### Example response (truncated)

```json
{"payload":"eyJhbGciOi..."} // decoded: {"paymentToken":"kSAops9Zw...","respCode":"0000","respDesc":"Success"}
```

### Agent notes

Everything is JWT-in, JWT-out: both requests and responses are signed payloads, so you must decode responses before reading fields. Merchant onboarding is sales-led, not self-serve.

## ACRA Corporate Entity Information

- Page: https://singaporeapi.com/apis/acra-corporate-entities
- Provider: ACRA via data.gov.sg (Singapore official)
- Category: Government Data
- Auth: none
- Pricing: free
- Base URL: https://data.gov.sg/api/action/datastore_search?resource_id=d_3a3807c023c61ddfba947dc069eb53f2
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Registered entity records from ACRA (UEN, entity name, type, status, registration date, registered address) published as open datasets, split alphabetically. Enables free UEN and company-name lookups.

### Auth guide

1. No key needed.
2. Datasets are split by entity-name first character; find each resource id in the ACRA Information on Corporate Entities collection on data.gov.sg.
3. Query datastore_search with q or filters (e.g. filters={"uen":"..."}).

### Example request

```
curl 'https://data.gov.sg/api/action/datastore_search?resource_id=d_3a3807c023c61ddfba947dc069eb53f2&q=BIG+BOX&limit=1'
```

### Example response (truncated)

```json
{"success":true,"result":{"fields":[{"id":"uen"},{"id":"entity_name"},{"id":"entity_status_description"},{"id":"registration_incorporation_date"}],"records":[...]}}
```

### Agent notes

This is periodic open data, not the live ACRA register; for authoritative live data BizFile APIs exist on api.gov.sg APEX but are restricted to approved partners. To look up an arbitrary company you must pick the right alphabetical resource id first.

## APEX (api.gov.sg Gateway)

- Page: https://singaporeapi.com/apis/apex-api-gov-sg
- Provider: GovTech Singapore (Singapore official)
- Category: Government Data
- Auth: restricted
- Pricing: contact
- Base URL: https://public-stg.api.gov.sg
- Docs: https://www.apex.gov.sg/

The whole-of-government API gateway through which agencies publish APIs (including ACRA BizFile, CPF and other agency services) to other agencies and approved businesses. Discovery and onboarding surface for gov APIs that are not on data.gov.sg.

### Auth guide

1. Browse the APEX catalogue at apex.gov.sg to find the agency API you need.
2. Government users log in with TechPass; external businesses must be sponsored/approved by the owning agency.
3. Complete the agency's onboarding (agreements, keys or certificates) before receiving credentials.
4. Most APEX APIs are not publicly callable; treat listings as leads, not endpoints.

### Example request

```
curl 'https://www.apex.gov.sg/' # discovery only; individual APIs require onboarding
```

### Example response (truncated)

```json
n/a (gateway/discovery portal; per-API responses vary by agency)
```

### Agent notes

Do not tell users they can just call APEX APIs: nearly all require agency approval. Useful as the authoritative index of what exists behind government walls (BizFile, CPF, MOM services).

## Adyen

- Page: https://singaporeapi.com/apis/adyen
- Provider: Adyen N.V.
- Category: Payments
- Auth: api_key
- Pricing: paid
- Base URL: https://checkout-test.adyen.com/v71
- Docs: https://docs.adyen.com/
- OpenAPI: https://raw.githubusercontent.com/Adyen/adyen-openapi/main/json/CheckoutService-v71.json

Enterprise payments platform with a single Checkout API for cards and local payment methods. In Singapore it supports PayNow (SGD, SG only) with real-time payments, QR code integration, refunds, partial refunds and separate captures via the standard /payments endpoint with paymentMethod.type set to paynow.

### Auth guide

1. Sign up for an Adyen test account and create a merchant account in the Customer Area.
2. Create an API credential under Developers > API credentials and generate an API key.
3. Add PayNow as a payment method in your Customer Area for your Singapore merchant account.
4. Send the key in the 'x-API-key' header on requests to the Checkout API (test host checkout-test.adyen.com; live uses your account-specific live URL prefix).
5. POST /payments with amount.currency SGD and paymentMethod.type 'paynow'.

### Example request

```
curl -X POST 'https://checkout-test.adyen.com/v71/payments' -H 'x-API-key: YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"merchantAccount":"YourMerchantAccount","amount":{"currency":"SGD","value":1000},"paymentMethod":{"type":"paynow"},"reference":"Your order number","returnUrl":"https://your-company.com/checkout"}'
```

### Example response (truncated)

```json
{"resultCode":"Pending","action":{"paymentMethodType":"paynow","type":"qrCode","qrCodeData":"..."}}
```

### Agent notes

Enterprise-oriented: test account is self-serve but going live requires Adyen onboarding/KYC and enabling PayNow on your merchant account. Live API hosts are account-specific (unique live URL prefix), so the test base URL above is only for sandbox. Full OpenAPI specs are published in the Adyen/adyen-openapi GitHub repo.

## Airwallex API

- Page: https://singaporeapi.com/apis/airwallex
- Provider: Airwallex
- Category: Payments
- Auth: oauth2
- Pricing: paid
- Base URL: https://api.airwallex.com/api/v1
- Docs: https://www.airwallex.com/docs

Global business accounts, multi-currency wallets, payouts, cards and payment acceptance with strong Singapore entity support. Common choice for SG companies paying overseas suppliers or holding multi-currency balances.

### Auth guide

1. Open an Airwallex account and get it verified for Singapore.
2. In the web app create an API key under Developer settings (client id + API key).
3. POST to /api/v1/authentication/login with x-client-id and x-api-key headers to obtain a bearer token (30 min validity).
4. Send Authorization: Bearer TOKEN on subsequent calls.
5. Use the demo environment (api-demo.airwallex.com) before production.

### Example request

```
curl -X POST 'https://api.airwallex.com/api/v1/authentication/login' -H 'x-client-id: YOUR_CLIENT_ID' -H 'x-api-key: YOUR_API_KEY'
```

### Example response (truncated)

```json
{"expires_at":"2026-07-05T12:00:00+0000","token":"eyJhbGciOi..."}
```

### Agent notes

Tokens expire every 30 minutes; cache and refresh. Payment acceptance, payouts and issuing are separate product scopes that may need enabling on the account first.

## Aspire API

- Page: https://singaporeapi.com/apis/aspire
- Provider: Aspire
- Category: Finance & Banking
- Auth: oauth2
- Pricing: contact
- Base URL: https://api.aspireapp.com
- Docs: https://aspireapp.com/api

Singapore-headquartered business finance platform offering APIs for payouts, FX conversions, account balances and transaction data on Aspire business accounts. Lets finance teams automate payment operations from their own systems.

### Auth guide

1. Open and verify an Aspire business account.
2. Request API access from your Aspire dashboard or account manager.
3. Receive client credentials and exchange them for an access token per the developer docs (docs.aspireapp.com).
4. Call payout/FX/balance endpoints with the bearer token.

### Example request

```
curl -H 'Authorization: Bearer YOUR_TOKEN' 'https://api.aspireapp.com/v1/accounts'
```

### Example response (truncated)

```json
{"data":[{"id":"acct_...","currency":"SGD","available_balance":"25000.00"}]}
```

### Agent notes

docs.aspireapp.com sits behind a bot-protection wall (curl gets 403); use a browser. API access is account-gated, so treat the request/response shapes here as templates until you have credentials.

## Bird (MessageBird) API

- Page: https://singaporeapi.com/apis/bird-messagebird
- Provider: Bird
- Category: Communications
- Auth: api_key
- Pricing: paid
- Base URL: https://api.bird.com
- Docs: https://docs.bird.com

Omnichannel messaging API (SMS, WhatsApp, email, voice) from the company formerly known as MessageBird, with SG SMS routes and sender ID support. Alternative CPaaS to Twilio with channel-agnostic message objects.

### Auth guide

1. Create a Bird account at bird.com.
2. Create an access key in the dashboard (Settings > Access keys).
3. Set up a channel (e.g. SMS) to get a channel id.
4. Send Authorization: Bearer ACCESS_KEY (new Bird API) on requests.
5. Register SG sender IDs per SGNIC rules through their compliance flow.

### Example request

```
curl -X POST 'https://api.bird.com/workspaces/WORKSPACE_ID/channels/CHANNEL_ID/messages' -H 'Authorization: Bearer ACCESS_KEY' -H 'Content-Type: application/json' -d '{"receiver":{"contacts":[{"identifierValue":"+65XXXXXXXX"}]},"body":{"type":"text","text":{"text":"Hello"}}}'
```

### Example response (truncated)

```json
{"id":"a1b2c3...","status":"accepted","body":{"type":"text","text":{"text":"Hello"}}}
```

### Agent notes

Two API generations exist: legacy rest.messagebird.com (AccessKey header) and the new api.bird.com workspace model; new projects should use the latter. Same SGNIC sender-ID registration rule applies as Twilio.

## DBS Developer APIs

- Page: https://singaporeapi.com/apis/dbs-developers
- Provider: DBS Bank
- Category: Finance & Banking
- Auth: restricted
- Pricing: contact
- Base URL: https://www.dbs.com/dbsdevelopers
- Docs: https://www.dbs.com/dbsdevelopers/discover/index.html

DBS's corporate API suite (DBS RAPID) covering real-time payments and collections including PayNow, account balances, transaction notifications and FX. The most mature bank API program in Singapore.

### Auth guide

1. Browse the API catalogue at dbs.com/dbsdevelopers.
2. Register for a developer account to access sandbox specs.
3. To go live you must be a DBS corporate banking customer; engage your DBS relationship manager to onboard onto RAPID.
4. Complete integration testing with DBS before production credentials are issued.

### Example request

```
curl -H 'apikey: SANDBOX_KEY' 'https://api.dbs.com/sgd/onboarding/accounts/balance' # shape depends on subscribed product
```

### Example response (truncated)

```json
{"header":{"msgId":"..."},"data":{"accountNo":"0721234567","balance":"152340.55","currency":"SGD"}}
```

### Agent notes

Production access is relationship-managed, not self-serve; realistic only for DBS corporate customers. Sandbox exploration is still useful for scoping PayNow collection builds.

## EasyParcel API

- Page: https://singaporeapi.com/apis/easyparcel
- Provider: EasyParcel
- Category: Logistics
- Auth: api_key
- Pricing: freemium
- Base URL: https://connect.easyparcel.sg
- Docs: https://developers.easyparcel.com

Shipping aggregator API that quotes and books across multiple couriers in Singapore (and MY/TH/ID) in one integration, with prepaid credit billing. Good fit for SMEs comparing courier rates programmatically.

### Auth guide

1. Register an EasyParcel SG account at easyparcel.com/sg.
2. Request/enable API integration from the dashboard to get your API key.
3. Use the demo host (demo.connect.easyparcel.sg) for testing.
4. POST form-style payloads with your api key in the body per the docs (rate checking, then submit order, then pay order).

### Example request

```
curl -X POST 'https://connect.easyparcel.sg/?ac=EPRateCheckingBulk' -d 'api=YOUR_KEY&bulk[0][pick_code]=059893&bulk[0][send_code]=408600&bulk[0][weight]=1'
```

### Example response (truncated)

```json
{"api_status":"Success","result":[{"rates":[{"courier_name":"Ninja Van","price":"5.90","currency":"SGD"}]}]}
```

### Agent notes

The API is form-encoded with an unusual ac= action-name query param rather than REST paths. Orders draw down prepaid wallet credit; top up before submitting.

## FOMO Pay

- Page: https://singaporeapi.com/apis/fomo-pay
- Provider: FOMO Pay Pte Ltd
- Category: Payments
- Auth: restricted
- Pricing: contact
- Docs: https://docs.fomopay.com/

Singapore MAS-licensed major payment institution providing a banking-grade API for accounts, balances, virtual accounts, beneficiaries, outgoing transfers and transaction data. Known in SG for QR payment acceptance (PayNow/SGQR) and digital-currency-to-fiat settlement rails for merchants.

### Auth guide

1. Complete FOMO Pay merchant onboarding; generate an RSA key pair (openssl genrsa -out key.pem 2048) and share only the PEM public key with FOMO.
2. After onboarding you receive a CustomerID used as the credential in the authorization header.
3. On each request set headers: host, content-type, x-fomo-date (RFC-3339 Zulu), x-fomo-nonce (16-256 hex chars), x-fomo-content-sha256 (SHA256 of body), x-fomo-api-version.
4. Build the CanonicalRequest (verb, URI, sorted query string, canonical headers, signed headers, hashed payload) and the StringToSign (FOMO1-RSA-SHA256 + timestamp + nonce + SHA256 of CanonicalRequest).
5. Sign with your private key (RSA-SHA256, hex) and send 'authorization: FOMO1-RSA-SHA256 Credential=<CustomerID>,SignedHeaders=...,Signature=<hex signature>'.

### Example request

```
curl 'https://uat.fomoapis.com/v1/transactions?balance_id=2b09efb6-f7b7-4739-96dc-5536ea6444f3' -H 'x-fomo-date: 2025-02-24T07:09:57.589Z' -H 'x-fomo-nonce: 421ae34f7c4ca51050253fd22ac2b23e' -H 'x-fomo-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' -H 'x-fomo-api-version: v20250212' -H 'authorization: FOMO1-RSA-SHA256 Credential=<CustomerID>,SignedHeaders=content-type;host;x-fomo-api-version;x-fomo-content-sha256;x-fomo-date;x-fomo-nonce,Signature=<hex>'
```

### Agent notes

No self-serve signup: you must onboard commercially and exchange RSA public keys before getting a CustomerID, and even FOMO cannot forge requests (private-key signing, AWS-SigV4-style canonical request). Docs examples use the UAT host uat.fomoapis.com; production host is provided at onboarding. Zero-downtime key rotation is supported by registering a second public key.

## Finverse

- Page: https://singaporeapi.com/apis/finverse
- Provider: Finverse
- Category: Finance & Banking
- Auth: oauth2
- Pricing: contact
- Base URL: https://api.prod.finverse.net
- Docs: https://docs.finverse.com/

Open-banking aggregation and payments API for Asia, providing linked-account data (balances, transactions, statements) and recurring payment rails. Coverage includes major Singapore banks such as DBS, UOB and Standard Chartered, accessed through a hosted Link flow that end users authorise.

### Auth guide

1. Sign up on the Finverse Developer Portal and obtain your customer_app_id, client_id and client_secret.
2. Exchange them for a customer access token: POST https://api.prod.finverse.net/auth/customer/token with client_id, client_secret and grant_type=client_credentials.
3. Use the customer token to create Link tokens / Link URLs that end users open to connect their bank accounts.
4. After a user links an institution, exchange the returned code for a login_identity token.
5. Call data endpoints (accounts, transactions, statements) with 'Authorization: Bearer <token>'.

### Example request

```
curl -X POST 'https://api.prod.finverse.net/auth/customer/token' -H 'Content-Type: application/json' -H 'X-Request-Id: unique-id-123' -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET","grant_type":"client_credentials"}'
```

### Example response (truncated)

```json
{"access_token":"eyJhbGciOi...","token_type":"Bearer","expires_in":3600}
```

### Agent notes

Developer Portal signup is self-serve with test institutions for sandboxing; production bank connections use credential-based linking since Singapore has no regulated open-banking mandate. Two token types matter: customer tokens (your app) vs login_identity tokens (a linked user). Pricing is not published in the docs.

## GrabExpress Delivery API

- Page: https://singaporeapi.com/apis/grab-express
- Provider: Grab
- Category: Logistics
- Auth: oauth2
- Pricing: contact
- Base URL: https://partner-api.grab.com/grab-express
- Docs: https://developer.grab.com

On-demand and same-day delivery API from Grab, letting merchants create, quote and track GrabExpress deliveries in Singapore and across SEA. Part of the wider Grab developer platform (deliveries, moca payments, partner integrations).

### Auth guide

1. Register as a Grab partner at developer.grab.com and request GrabExpress API access (business review applies).
2. Receive client_id and client_secret for the sandbox.
3. Get a token via OAuth 2.0 client_credentials against the Grab token endpoint.
4. Quote first (POST /deliveries/quotes), then create the delivery with the quoted payload.
5. Move to production keys after Grab approves your integration.

### Example request

```
curl -X POST 'https://partner-api.grab.com/grab-express/v1/deliveries/quotes' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{"origin":{"address":"1 Raffles Place"},"destination":{"address":"81 Ubi Ave 4"},"packages":[{"weight":1}]}'
```

### Example response (truncated)

```json
{"quotes":[{"service":{"type":"INSTANT"},"amount":13.5,"currency":{"code":"SGD"}}]}
```

### Agent notes

Partner approval is required before you can even use the sandbox meaningfully. Quotes expire quickly; create the delivery promptly after quoting.

## HDB Carpark Availability

- Page: https://singaporeapi.com/apis/hdb-carpark-availability
- Provider: HDB via data.gov.sg (Singapore official)
- Category: Transport
- Auth: none
- Pricing: free
- Base URL: https://api.data.gov.sg/v1/transport/carpark-availability
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Live lot availability for HDB carparks across Singapore, updated every minute. Each carpark reports total lots and available lots per lot type (car, motorcycle, heavy vehicle).

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: request a data.gov.sg API key for higher rate limits and send it as x-api-key.

### Example request

```
curl 'https://api.data.gov.sg/v1/transport/carpark-availability'
```

### Example response (truncated)

```json
{"items":[{"timestamp":"2026-07-05T16:27:38+08:00","carpark_data":[{"carpark_number":"HE12","carpark_info":[{"total_lots":"105","lots_available":"101","lot_type":"C"}]}]}]}
```

### Agent notes

Covers HDB carparks only; LTA DataMall CarParkAvailabilityv2 adds malls and URA carparks. Carpark numbers map to locations via the HDB Carpark Information dataset on data.gov.sg.

## HDB Resale Flat Prices

- Page: https://singaporeapi.com/apis/hdb-resale-prices
- Provider: HDB via data.gov.sg (Singapore official)
- Category: Property
- Auth: none
- Pricing: free
- Base URL: https://data.gov.sg/api/action/datastore_search?resource_id=d_8b84c4ee58e3cfc0ece0d773c8ca6abc
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Every HDB resale transaction from 2017 onward: month, town, flat type, block, street, storey range, floor area, remaining lease and resale price. The canonical dataset behind SG property analytics.

### Auth guide

1. No key needed.
2. Query the datastore_search endpoint with this resource_id and optional filters/q/limit/offset params.

### Example request

```
curl 'https://data.gov.sg/api/action/datastore_search?resource_id=d_8b84c4ee58e3cfc0ece0d773c8ca6abc&limit=1'
```

### Example response (truncated)

```json
{"success":true,"result":{"records":[{"_id":1,"month":"2017-01","town":"ANG MO KIO","flat_type":"2 ROOM","floor_area_sqm":"44","resale_price":232000}]}}
```

### Agent notes

resale_price is numeric but floor_area_sqm is text; cast before math. Earlier periods (1990-2016) live in separate resource ids in the same collection.

## Handshakes API

- Page: https://singaporeapi.com/apis/handshakes
- Provider: Handshakes (DC Frontiers)
- Category: Government Data
- Auth: token
- Pricing: contact
- Docs: https://developer.handshakes.com.sg/

Singapore corporate-intelligence API exposing official registry data (including ACRA-sourced Singapore company information) as entity searches, registry/financial/litigation reports and relationship graphs. Used for KYC/KYB customer due diligence, lead generation and vendor risk mapping, with output in JSON, XML or PDF.

### Auth guide

1. Sign up for a Handshakes account (see the 'Sign up for account' page on the developer portal).
2. Request an access token using your Handshakes account username and password (e.g. via Postman).
3. You receive a JSON response with access_token (JWT), token_type 'bearer' and expires_in.
4. Send 'Authorization: Bearer <access_token>' on all subsequent API requests (search, reports, graphs, balance).
5. Tokens expire after 1 hour; request a new token when expired. Use the Check Balance endpoint to monitor your credit balance.

### Example response (truncated)

```json
{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOi...","token_type":"bearer","expires_in":259199}
```

### Agent notes

Account provisioning is sales-assisted and usage is credit-metered (there is a dedicated check-balance endpoint); report generation debits credits per call. Docs live at developer.handshakes.ai (developer.handshakes.com.sg redirects there). Staging environment is provided for integration testing before production.

## HitPay API

- Page: https://singaporeapi.com/apis/hitpay
- Provider: HitPay
- Category: Payments
- Auth: api_key
- Pricing: paid
- Base URL: https://api.hit-pay.com/v1
- Docs: https://docs.hitpayapp.com

Singapore-born payment gateway popular with SMEs: one API for PayNow QR, cards, GrabPay, ShopeePay and more, with no monthly fees. Simple payment-request model that is easier than Stripe for basic use cases.

### Auth guide

1. Sign up for a HitPay business account at hitpayapp.com.
2. In the dashboard go to Settings > Payment Gateway > API Keys and generate keys.
3. Use sandbox (api.sandbox.hit-pay.com) with sandbox keys for testing.
4. Send the key as the X-BUSINESS-API-KEY header on every request.
5. Configure a webhook URL to receive payment confirmations.

### Example request

```
curl -X POST 'https://api.hit-pay.com/v1/payment-requests' -H 'X-BUSINESS-API-KEY: YOUR_KEY' -H 'Content-Type: application/x-www-form-urlencoded' -d 'amount=10.00&currency=SGD&email=buyer@example.com'
```

### Example response (truncated)

```json
{"id":"9f2...","status":"pending","currency":"sgd","amount":"10.00","url":"https://hit-pay.com/payment-request/@..."}
```

### Agent notes

The payment-request URL is a hosted checkout page; redirect the customer there. Webhook payloads are form-encoded and HMAC-signed with your salt, not JSON.

## IRAS API Marketplace

- Page: https://singaporeapi.com/apis/iras-api-marketplace
- Provider: Inland Revenue Authority of Singapore (IRAS) (Singapore official)
- Category: Government Data
- Auth: api_key
- Pricing: free
- Base URL: https://apiservices.iras.gov.sg/iras/prod/
- Docs: https://apiservices.iras.gov.sg/iras/devportal/

IRAS's developer portal exposing tax-related APIs such as GST Registered Business Search, Stamp Duty Calculator, and filing APIs for payroll (AIS) and corporate tax software. Public lookup APIs are self-serve; filing APIs require onboarding.

### Auth guide

1. Create an account on the IRAS API Marketplace (apiservices.iras.gov.sg/iras/devportal/).
2. Create an app in the portal to receive client_id and client_secret.
3. Subscribe your app to the specific API product (e.g. GST Registered Business Search).
4. Call endpoints with X-IBM-Client-Id and X-IBM-Client-Secret headers.
5. Filing APIs (AIS, CIT, GST returns) additionally require IRAS approval and Corppass-based flows.

### Example request

```
curl -X POST 'https://apiservices.iras.gov.sg/iras/prod/GSTListing/SearchGSTRegistered' -H 'X-IBM-Client-Id: YOUR_ID' -H 'X-IBM-Client-Secret: YOUR_SECRET' -H 'Content-Type: application/json' -d '{"clientID":"YOUR_ID","regID":"200012345A"}'
```

### Example response (truncated)

```json
{"returnCode":"10","data":{"name":"COMPANY PTE. LTD.","gstRegistrationNumber":"M90312345K","Status":"Registered"}}
```

### Agent notes

GST Registered Business Search is the easiest win: self-serve signup, no approval. The portal runs on IBM API Connect, hence the X-IBM-* header names.

## LTA DataMall Bus Arrival

- Page: https://singaporeapi.com/apis/lta-datamall-bus-arrival
- Provider: Land Transport Authority (LTA) (Singapore official)
- Category: Transport
- Auth: api_key
- Pricing: free
- Base URL: https://datamall2.mytransport.sg/ltaodataservice/v3/BusArrival
- Docs: https://datamall.lta.gov.sg/content/datamall/en.html

Real-time bus arrival estimates for any bus stop in Singapore, including load, deck type and wheelchair accessibility for the next three buses per service. The most-used SG transport API.

### Auth guide

1. Go to datamall.lta.gov.sg and click Request for API Access.
2. Fill in the registration form with your email; approval is automated.
3. Receive your AccountKey by email (usually within minutes).
4. Send it on every request as the AccountKey header.
5. Read the API User Guide PDF (linked on the DataMall site) for all endpoint paths.

### Example request

```
curl -H 'AccountKey: YOUR_ACCOUNT_KEY' -H 'accept: application/json' 'https://datamall2.mytransport.sg/ltaodataservice/v3/BusArrival?BusStopCode=83139'
```

### Example response (truncated)

```json
{"odata.metadata":"...","BusStopCode":"83139","Services":[{"ServiceNo":"15","NextBus":{"EstimatedArrival":"2026-07-05T16:35:00+08:00","Load":"SEA"}}]}
```

### Agent notes

Missing or wrong AccountKey returns a 404 or an HTML error page, not a 401; if you get 404 check the header first. v3 is current; older /BusArrivalv2 paths are deprecated.

## LTA DataMall Traffic Incidents

- Page: https://singaporeapi.com/apis/lta-datamall-traffic-incidents
- Provider: Land Transport Authority (LTA) (Singapore official)
- Category: Transport
- Auth: api_key
- Pricing: free
- Base URL: https://datamall2.mytransport.sg/ltaodataservice/TrafficIncidents
- Docs: https://datamall.lta.gov.sg/content/datamall/en.html

Current road incidents (accidents, roadworks, vehicle breakdowns, heavy traffic) with type, coordinates and a human-readable message. Companion endpoints cover travel times, traffic images and carpark lots.

### Auth guide

1. Request API access at datamall.lta.gov.sg (free, automated form).
2. Receive your AccountKey by email.
3. Send it as the AccountKey header on each request.

### Example request

```
curl -H 'AccountKey: YOUR_ACCOUNT_KEY' -H 'accept: application/json' 'https://datamall2.mytransport.sg/ltaodataservice/TrafficIncidents'
```

### Example response (truncated)

```json
{"value":[{"Type":"Accident","Latitude":1.30398,"Longitude":103.919182,"Message":"(5/7)16:00 Accident on ECP (towards City) after Marine Parade."}]}
```

### Agent notes

Results are paged 500 at a time via $skip. Same AccountKey works across all DataMall endpoints including EstimatedTravelTimes and Traffic-Imagesv2.

## LTA DataMall Train Service Alerts

- Page: https://singaporeapi.com/apis/lta-datamall-train-service-alerts
- Provider: Land Transport Authority (LTA) (Singapore official)
- Category: Transport
- Auth: api_key
- Pricing: free
- Base URL: https://datamall2.mytransport.sg/ltaodataservice/TrainServiceAlerts
- Docs: https://datamall.lta.gov.sg/content/datamall/en.html

Real-time MRT and LRT service status, including disruption details, affected segments and free shuttle information. Returns an all-clear status when trains run normally.

### Auth guide

1. Request API access at datamall.lta.gov.sg (free, automated form).
2. Receive your AccountKey by email.
3. Send it as the AccountKey header on each request.

### Example request

```
curl -H 'AccountKey: YOUR_ACCOUNT_KEY' -H 'accept: application/json' 'https://datamall2.mytransport.sg/ltaodataservice/TrainServiceAlerts'
```

### Example response (truncated)

```json
{"value":{"Status":1,"AffectedSegments":[],"Message":[]}}
```

### Agent notes

Status 1 means normal service, 2 means disruption. Poll sparingly; disruptions are rare and the payload is tiny.

## Lalamove API

- Page: https://singaporeapi.com/apis/lalamove
- Provider: Lalamove
- Category: Logistics
- Auth: api_key
- Pricing: contact
- Base URL: https://rest.lalamove.com
- Docs: https://developers.lalamove.com

On-demand delivery API for motorcycles, cars, vans and lorries in Singapore: get quotes, place orders, track drivers and receive webhooks. Self-serve sandbox makes it the easiest SG courier API to start with.

### Auth guide

1. Sign up at developers.lalamove.com for a sandbox account (self-serve).
2. Copy your API key and secret from the dashboard.
3. Sign each request: HMAC-SHA256 over timestamp, method, path and body, sent as Authorization: hmac KEY:TIMESTAMP:SIGNATURE.
4. Set the Market header to SG.
5. Apply for production keys once your flows work in sandbox.

### Example request

```
curl -X POST 'https://rest.sandbox.lalamove.com/v3/quotations' -H 'Authorization: hmac KEY:TS:SIG' -H 'Market: SG' -H 'Content-Type: application/json' -d '{"data":{"serviceType":"MOTORCYCLE","stops":[{"address":"1 Raffles Place"},{"address":"81 Ubi Ave 4"}]}}'
```

### Example response (truncated)

```json
{"data":{"quotationId":"18500...","priceBreakdown":{"total":"9.40","currency":"SGD"},"expiresAt":"..."}}
```

### Agent notes

The HMAC signature format trips everyone; the raw string is TIMESTAMP\r\nMETHOD\r\nPATH\r\n\r\nBODY. Quotations expire in 5 minutes, place the order with the quotationId before then.

## Lazada Open Platform API

- Page: https://singaporeapi.com/apis/lazada-open-platform
- Provider: Lazada (Alibaba Group)
- Category: Commerce
- Auth: oauth2
- Pricing: free
- Base URL: https://api.lazada.sg/rest
- Docs: https://open.lazada.com

Seller APIs for Lazada Singapore covering products, orders, logistics, finance and data, using Alibaba-style signed requests. The other must-have marketplace integration for SG e-commerce tooling.

### Auth guide

1. Register at open.lazada.com and create an app to get app key and secret.
2. Have the seller authorize via the Lazada auth URL; exchange the code for access_token via /auth/token/create.
3. Sign every request: HMAC-SHA256 over the sorted parameter string with your app secret (sign param).
4. Use the country-specific endpoint (api.lazada.sg for Singapore).
5. Refresh tokens before the (roughly weekly) expiry via /auth/token/refresh.

### Example request

```
curl 'https://api.lazada.sg/rest/orders/get?app_key=KEY&timestamp=TS&access_token=TOKEN&sign_method=sha256&sign=SIGN&created_after=2026-07-01T00:00:00+08:00'
```

### Example response (truncated)

```json
{"code":"0","data":{"count":2,"orders":[{"order_id":123456789,"statuses":["pending"],"price":"59.90"}]}}
```

### Agent notes

Signature is over alphabetically sorted params concatenated with the API path; a single unsorted param breaks it. Each Lazada country is a separate endpoint and seller authorization.

## MAS APIs (Exchange Rates and Statistics)

- Page: https://singaporeapi.com/apis/mas-statistics-api
- Provider: Monetary Authority of Singapore (MAS) (Singapore official)
- Category: Finance & Banking
- Auth: none
- Pricing: free
- Base URL: https://eservices.mas.gov.sg/api/action/datastore/search.json
- Docs: https://eservices.mas.gov.sg/apimg-portal/

Official MAS data APIs covering daily SGD exchange rates, interest rates (SORA), monthly statistical bulletin tables and financial institution directories. Served from the MAS eservices API gateway.

### Auth guide

1. Legacy datastore endpoints (exchange rates, SORA) need no key: pass resource_id and filters as query params.
2. Newer APIs on the MAS API portal (eservices.mas.gov.sg/apimg-portal) may require registering for an API key on that portal.
3. Browse available resources and their resource_ids from the portal's API catalogue.

### Example request

```
curl 'https://eservices.mas.gov.sg/api/action/datastore/search.json?resource_id=95932927-c8bc-4e7a-b484-68a66a24edfe&limit=1&sort=end_of_day+desc'
```

### Example response (truncated)

```json
{"success":true,"result":{"records":[{"end_of_day":"2026-07-03","usd_sgd":"1.28...","eur_sgd":"..."}]}}
```

### Agent notes

Verified caveat: on 2026-07-05 the whole eservices.mas.gov.sg API surface was serving a maintenance page (MAS runs weekend maintenance windows); retry on a weekday before declaring it dead. The example response shape is from MAS docs, not a live call.

## Myinfo (Singpass Verified Data)

- Page: https://singaporeapi.com/apis/myinfo
- Provider: GovTech Singapore (Singapore official)
- Category: Identity
- Auth: restricted
- Pricing: contact
- Base URL: https://api.singpass.gov.sg
- Docs: https://api.singpass.gov.sg/library/myinfo/developers/overview

Government-verified personal data (name, NRIC, address, income, CPF history and more) retrieved with user consent through Singpass. Kills manual form-filling and KYC document uploads.

### Auth guide

1. Review the Myinfo developer library at api.singpass.gov.sg/library/myinfo/developers/overview.
2. Apply via the Singpass Developer Portal with your use case; approval gates which data attributes you may request.
3. Implement the consent flow (authorise, token, person endpoints) against the sandbox/test environment.
4. Pass security and integration review before production credentials are issued.

### Example request

```
curl -H 'Authorization: Bearer ACCESS_TOKEN' 'https://api.singpass.gov.sg/.../myinfo/v4/person/{uinfin}/?scope=name+regadd'
```

### Example response (truncated)

```json
{"name":{"value":"TAN AH KOW"},"regadd":{"block":{"value":"102"},"street":{"value":"BEDOK NORTH AVENUE 4"},"postal":{"value":"460102"}}}
```

### Agent notes

Restricted like Singpass Login; v4 uses ephemeral key DPoP and encrypted payloads (JWE), meaningfully harder than a plain OAuth2 API. A public sandbox exists for trying the flow before onboarding.

## NEA 2-Hour Weather Forecast

- Page: https://singaporeapi.com/apis/nea-2hr-weather-forecast
- Provider: NEA via data.gov.sg (Singapore official)
- Category: Weather & Environment
- Auth: none
- Pricing: free
- Base URL: https://api-open.data.gov.sg/v2/real-time/api/two-hr-forecast
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Area-level weather forecast for the next 2 hours across 47 Singapore planning areas, refreshed every 30 minutes. Returns forecast text (e.g. Thundery Showers) plus label coordinates per area.

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: create an account at data.gov.sg and request an API key for higher rate limits.
3. If you have a key, send it in the x-api-key header.

### Example request

```
curl 'https://api-open.data.gov.sg/v2/real-time/api/two-hr-forecast'
```

### Example response (truncated)

```json
{"code":0,"data":{"area_metadata":[{"name":"Ang Mo Kio","label_location":{"longitude":103.839,"latitude":1.375}}]}}
```

### Agent notes

v2 (api-open.data.gov.sg) is the current API; the older v1 at api.data.gov.sg/v1/environment/2-hour-weather-forecast still works too. Add ?date=YYYY-MM-DD for historical.

## NEA 24-Hour Weather Forecast

- Page: https://singaporeapi.com/apis/nea-24hr-weather-forecast
- Provider: NEA via data.gov.sg (Singapore official)
- Category: Weather & Environment
- Auth: none
- Pricing: free
- Base URL: https://api-open.data.gov.sg/v2/real-time/api/twenty-four-hr-forecast
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

General 24-hour outlook for Singapore with per-region (north, south, east, west, central) forecasts in time blocks, plus temperature, humidity and wind ranges. Updated multiple times a day.

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: request a data.gov.sg API key for higher rate limits and send it as x-api-key.

### Example request

```
curl 'https://api-open.data.gov.sg/v2/real-time/api/twenty-four-hr-forecast'
```

### Example response (truncated)

```json
{"code":0,"data":{"records":[{"date":"2026-07-05","periods":[{"regions":{"north":{"text":"Thundery Showers","code":"TL"}}}]}]}}
```

### Agent notes

Use this for day-planning answers; use the 2-hour endpoint for right-now weather. Response nests periods by timePeriod blocks.

## NEA Dengue Clusters (GeoJSON)

- Page: https://singaporeapi.com/apis/nea-dengue-clusters
- Provider: NEA via data.gov.sg (Singapore official)
- Category: Weather & Environment
- Auth: none
- Pricing: free
- Base URL: https://api-open.data.gov.sg/v1/public/api/datasets/d_dbfabf16158d1b0e1c420627c0819168/poll-download
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Current dengue cluster boundaries as GeoJSON, published by NEA and refreshed on data.gov.sg. Fetch via the dataset poll-download API which returns a signed S3 download URL.

### Auth guide

1. No key needed for the poll-download call.
2. GET the poll-download endpoint to receive a JSON body with a time-limited signed URL.
3. GET that signed URL to download the GeoJSON file.

### Example request

```
curl 'https://api-open.data.gov.sg/v1/public/api/datasets/d_dbfabf16158d1b0e1c420627c0819168/poll-download'
```

### Example response (truncated)

```json
{"code":0,"data":{"url":"https://s3.ap-southeast-1.amazonaws.com/blobs.data.gov.sg/d_dbfabf16158d1b0e1c420627c0819168.geojson?..."}}
```

### Agent notes

Two-step fetch: poll-download first, then the signed URL (it expires). The GeoJSON properties are HTML-encoded description blobs; parse the table inside for case counts.

## NEA PSI (Pollutant Standards Index)

- Page: https://singaporeapi.com/apis/nea-psi
- Provider: NEA via data.gov.sg (Singapore official)
- Category: Weather & Environment
- Auth: none
- Pricing: free
- Base URL: https://api-open.data.gov.sg/v2/real-time/api/psi
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Hourly PSI and pollutant concentration readings (PM2.5, PM10, SO2, CO, O3, NO2) for the five regions of Singapore. The go-to source during haze season.

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: request a data.gov.sg API key for higher rate limits and send it as x-api-key.

### Example request

```
curl 'https://api-open.data.gov.sg/v2/real-time/api/psi'
```

### Example response (truncated)

```json
{"code":0,"data":{"regionMetadata":[{"name":"central","labelLocation":{"longitude":103.82,"latitude":1.35735}}]}}
```

### Agent notes

v2 uses camelCase keys; v1 (api.data.gov.sg/v1/environment/psi) uses snake_case and still works. psi_twenty_four_hourly is the headline number people mean by PSI.

## NEA Real-Time Air Temperature

- Page: https://singaporeapi.com/apis/nea-air-temperature-realtime
- Provider: NEA via data.gov.sg (Singapore official)
- Category: Weather & Environment
- Auth: none
- Pricing: free
- Base URL: https://api-open.data.gov.sg/v2/real-time/api/air-temperature
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Air temperature readings in degrees Celsius from island-wide NEA stations, updated every minute. Useful for hyperlocal current conditions.

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: request a data.gov.sg API key for higher rate limits and send it as x-api-key.

### Example request

```
curl 'https://api-open.data.gov.sg/v2/real-time/api/air-temperature'
```

### Example response (truncated)

```json
{"code":0,"data":{"stations":[{"id":"S109","name":"Ang Mo Kio Avenue 5","location":{"longitude":103.85,"latitude":1.3793}}]}}
```

### Agent notes

Pick the nearest station by haversine distance to the user's coordinates; readings array pairs stationId with value.

## NEA Real-Time Rainfall Readings

- Page: https://singaporeapi.com/apis/nea-rainfall-realtime
- Provider: NEA via data.gov.sg (Singapore official)
- Category: Weather & Environment
- Auth: none
- Pricing: free
- Base URL: https://api-open.data.gov.sg/v2/real-time/api/rainfall
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Precipitation readings in mm from NEA weather stations across Singapore, updated every 5 minutes. Each record carries station id, coordinates and the latest reading.

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: request a data.gov.sg API key for higher rate limits and send it as x-api-key.

### Example request

```
curl 'https://api-open.data.gov.sg/v2/real-time/api/rainfall'
```

### Example response (truncated)

```json
{"code":0,"data":{"stations":[{"id":"S218","name":"Bukit Batok Street 34","location":{"longitude":103.75065,"latitude":1.36491}}]}}
```

### Agent notes

Sister endpoints on the same base: air-temperature, relative-humidity, wind-speed, wind-direction. Match readings to stations via station id.

## NEA UV Index

- Page: https://singaporeapi.com/apis/nea-uv-index
- Provider: NEA via data.gov.sg (Singapore official)
- Category: Weather & Environment
- Auth: none
- Pricing: free
- Base URL: https://api-open.data.gov.sg/v2/real-time/api/uv
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Hourly UV index readings for Singapore covering each hour of the current day. Returns a simple hour and value series.

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: request a data.gov.sg API key for higher rate limits and send it as x-api-key.

### Example request

```
curl 'https://api-open.data.gov.sg/v2/real-time/api/uv'
```

### Example response (truncated)

```json
{"code":0,"data":{"records":[{"index":[{"hour":"2026-07-05T16:00:00+08:00","value":4},{"value":6,"hour":"2026-07-05T15:00:00+08:00"}]}]}}
```

### Agent notes

UV only reads non-zero during daylight hours. The index array is newest-first.

## NETS eNETS / NETS QR API

- Page: https://singaporeapi.com/apis/nets-enets
- Provider: NETS
- Category: Payments
- Auth: api_key
- Pricing: contact
- Base URL: https://uat-api.nets.com.sg
- Docs: https://developer.nets.com.sg

Singapore's domestic payment network: eNETS online banking payments, NETS QR and NETS click for cards. The way to accept NETS, which many local customers still prefer.

### Auth guide

1. Register on the NETS developer portal (developer.nets.com.sg).
2. Create an app to obtain sandbox API key and project credentials.
3. Sign requests per the docs (MAC/HMAC over the payload with your secret).
4. Apply to NETS to become a merchant before going live; production credentials come with the merchant agreement.

### Example request

```
curl -X POST 'https://uat-api.nets.com.sg/uat/merchantservices/qr/dynamic/v1/order/request' -H 'api-key: YOUR_KEY' -H 'project-id: YOUR_PROJECT' -H 'Content-Type: application/json' -d '{"txn_id":"TEST123","amt_in_dollars":1.00}'
```

### Example response (truncated)

```json
{"response_code":"00","txn_status":"0","qr_code":"iVBORw0KGgo..."}
```

### Agent notes

Sandbox is self-serve but production strictly requires a signed NETS merchant agreement. QR codes are returned base64-encoded; poll the query endpoint or use webhooks for payment status.

## Ninja Van API

- Page: https://singaporeapi.com/apis/ninja-van
- Provider: Ninja Van
- Category: Logistics
- Auth: oauth2
- Pricing: contact
- Base URL: https://api.ninjavan.co/SG
- Docs: https://api-docs.ninjavan.co/en

Singapore-headquartered SEA logistics network with APIs for creating orders, generating waybills, tracking parcels and receiving webhook events. Standard choice for e-commerce parcel delivery in SG.

### Auth guide

1. Contact Ninja Van (or your account manager) to become a shipper and get API credentials; there is a sandbox environment (api-sandbox.ninjavan.co).
2. Get an access token via POST /SG/2.0/oauth/access_token with client_id, client_secret, grant_type=client_credentials.
3. Tokens are long-lived; cache until expiry.
4. Create orders on /SG/4.2/orders and subscribe to webhook events for tracking.

### Example request

```
curl -X POST 'https://api.ninjavan.co/SG/2.0/oauth/access_token' -H 'Content-Type: application/json' -d '{"client_id":"YOUR_ID","client_secret":"YOUR_SECRET","grant_type":"client_credentials"}'
```

### Example response (truncated)

```json
{"access_token":"eyJhbGciOi...","expires_in":3600,"token_type":"bearer"}
```

### Agent notes

The country code (SG) is part of the URL path on every endpoint. Shipper onboarding is required; the API is not usable anonymously.

## Nium API

- Page: https://singaporeapi.com/apis/nium
- Provider: Nium
- Category: Payments
- Auth: api_key
- Pricing: contact
- Base URL: https://gateway.nium.com/api
- Docs: https://docs.nium.com

Singapore-headquartered global payments infrastructure: real-time payouts to 190+ countries, collections, FX and card issuing, all API-first. Built for fintechs and platforms embedding cross-border money movement.

### Auth guide

1. Request sandbox access via docs.nium.com / the Nium sales team (platform business onboarding).
2. Receive your API key and client details for the sandbox.
3. Send x-api-key on every request plus a unique x-request-id.
4. Complete compliance onboarding to obtain production credentials.

### Example request

```
curl -H 'x-api-key: YOUR_KEY' -H 'x-request-id: uuid-1234' 'https://gateway.nium.com/api/v1/exchangeRate?sourceCurrencyCode=SGD&destinationCurrencyCode=USD'
```

### Example response (truncated)

```json
{"exchange_rate":0.7788,"source_currency_code":"SGD","destination_currency_code":"USD","expiry_time":"..."}
```

### Agent notes

Enterprise-gated: sandbox is obtainable but production requires a commercial agreement and licensing review. Every call needs a unique x-request-id for idempotency.

## OCBC API Developer Platform

- Page: https://singaporeapi.com/apis/ocbc-api
- Provider: OCBC Bank
- Category: Finance & Banking
- Auth: oauth2
- Pricing: contact
- Base URL: https://api.ocbc.com
- Docs: https://api.ocbc.com

OCBC's API platform (api.ocbc.com), the first open banking portal launched by a Singapore bank, offering corporate payment, account and product APIs plus sandbox access. Aimed at fintechs and OCBC business customers.

### Auth guide

1. Register a developer account at api.ocbc.com.
2. Create an app to get client id and secret with sandbox access.
3. Use the OAuth 2.0 client credentials or authorization flows per API product.
4. Production/live APIs require OCBC partnership or corporate banking onboarding.

### Example request

```
curl -H 'Authorization: Bearer SANDBOX_TOKEN' 'https://api.ocbc.com/transactional/corporateaccount/1.0/balance?accountNo=SANDBOX'
```

### Example response (truncated)

```json
{"Results":{"AccountNo":"501123456001","AvailableBalance":"88000.00","Currency":"SGD"}}
```

### Agent notes

Sandbox is self-serve; live corporate APIs are gated behind bank onboarding. Catalogue has thinned over the years, so confirm the specific product still exists before committing.

## OneMap Reverse Geocode

- Page: https://singaporeapi.com/apis/onemap-reverse-geocode
- Provider: Singapore Land Authority (SLA) (Singapore official)
- Category: Geo & Maps
- Auth: token
- Pricing: free
- Base URL: https://www.onemap.gov.sg/api/public/revgeocode
- Docs: https://www.onemap.gov.sg/apidocs/

Convert WGS84 or SVY21 coordinates into the nearest Singapore buildings, block numbers, road names and postal codes within a chosen buffer. Companion endpoints expose themes and planning-area population queries.

### Auth guide

1. Register a free account at onemap.gov.sg.
2. POST email and password to https://www.onemap.gov.sg/api/auth/post/getToken to get a 3-day access_token.
3. Send the token in the Authorization header.

### Example request

```
curl -H 'Authorization: YOUR_TOKEN' 'https://www.onemap.gov.sg/api/public/revgeocode?location=1.3,103.8&buffer=40&addressType=All'
```

### Example response (truncated)

```json
{"GeocodeInfo":[{"BUILDINGNAME":"...","BLOCK":"20","ROAD":"HOLLAND GROVE ROAD","POSTALCODE":"278790","LATITUDE":"1.3","LONGITUDE":"103.8"}]}
```

### Agent notes

buffer max is 500m. Use revgeocodexy for SVY21 input. Same token works across all OneMap APIs.

## OneMap Routing

- Page: https://singaporeapi.com/apis/onemap-routing
- Provider: Singapore Land Authority (SLA) (Singapore official)
- Category: Geo & Maps
- Auth: token
- Pricing: free
- Base URL: https://www.onemap.gov.sg/api/public/routingsvc/route
- Docs: https://www.onemap.gov.sg/apidocs/

Turn-by-turn routing within Singapore for drive, walk, cycle and public transport modes, including bus and train legs with fares for the pt mode. Free alternative to commercial routing for SG-only apps.

### Auth guide

1. Register a free account at onemap.gov.sg.
2. POST email and password to https://www.onemap.gov.sg/api/auth/post/getToken to get a 3-day access_token.
3. Send the token in the Authorization header on every routing call.

### Example request

```
curl -H 'Authorization: YOUR_TOKEN' 'https://www.onemap.gov.sg/api/public/routingsvc/route?start=1.320981,103.844150&end=1.326762,103.8559&routeType=drive'
```

### Example response (truncated)

```json
{"status_message":"Found route between points","route_geometry":"encoded_polyline...","route_summary":{"total_time":420,"total_distance":3600}}
```

### Agent notes

routeType=pt needs extra params (date, time, mode=TRANSIT, maxWalkDistance). Geometry is an encoded polyline; decode with any polyline library.

## OneMap Search (Geocoding)

- Page: https://singaporeapi.com/apis/onemap-search
- Provider: Singapore Land Authority (SLA) (Singapore official)
- Category: Geo & Maps
- Auth: token
- Pricing: free
- Base URL: https://www.onemap.gov.sg/api/common/elastic/search
- Docs: https://www.onemap.gov.sg/apidocs/

Authoritative Singapore address and place search: postal codes, building names and roads to coordinates in both WGS84 and SVY21. The standard way to geocode SG addresses.

### Auth guide

1. Register a free account at onemap.gov.sg (email verification).
2. POST your email and password to https://www.onemap.gov.sg/api/auth/post/getToken.
3. Use the returned access_token as Authorization header; it expires after 3 days.
4. Renew by calling getToken again (automate this in your client).

### Example request

```
curl -H 'Authorization: YOUR_TOKEN' 'https://www.onemap.gov.sg/api/common/elastic/search?searchVal=Raffles+Place&returnGeom=Y&getAddrDetails=Y&pageNum=1'
```

### Example response (truncated)

```json
{"found":21,"results":[{"SEARCHVAL":"ASCOTT SINGAPORE RAFFLES PLACE","ADDRESS":"2 FINLAYSON GREEN ... SINGAPORE 049247","POSTAL":"049247","LATITUDE":"1.2820837651092","LONGITUDE":"103.851559731294"}]}
```

### Agent notes

Quirk verified 2026-07-05: without a token the search endpoint still returns results but includes an error field asking for a token; do not rely on that, docs state a token is required. Postal code as searchVal is the most reliable lookup.

## Opn Payments (Omise) API

- Page: https://singaporeapi.com/apis/omise-opn
- Provider: Opn Payments
- Category: Payments
- Auth: api_key
- Pricing: paid
- Base URL: https://api.omise.co
- Docs: https://docs.omise.co

Regional payment gateway (formerly Omise) operating in Singapore, Thailand and Japan with cards, PayNow and local payment methods. Clean REST API with a tokenization-first design.

### Auth guide

1. Sign up at dashboard.omise.co and select Singapore as your country.
2. Copy test public and secret keys from the dashboard.
3. Tokenize cards client-side with the public key (vault.omise.co).
4. Create charges server-side with the secret key via HTTP Basic auth.
5. Complete merchant verification for live keys.

### Example request

```
curl https://api.omise.co/charges -u skey_test_YOUR_KEY: -d amount=100000 -d currency=sgd -d 'source[type]'=paynow
```

### Example response (truncated)

```json
{"object":"charge","id":"chrg_test_...","amount":100000,"currency":"sgd","status":"pending","source":{"type":"paynow","scannable_code":{...}}}
```

### Agent notes

Amounts are in cents (subunits). PayNow charges return a scannable_code QR to display; completion arrives by webhook.

## Peppol Directory API

- Page: https://singaporeapi.com/apis/peppol-directory
- Provider: OpenPeppol AISBL
- Category: E-Invoicing (InvoiceNow)
- Auth: none
- Pricing: free
- Rate limit: 2 queries per second (HTTP 429 returned above that)
- Base URL: https://directory.peppol.eu/search/1.0
- Docs: https://directory.peppol.eu/public/menuitem-docs-rest-api

Free public REST API over the OpenPeppol Directory, which indexes business cards of Peppol participants worldwide, including Singapore InvoiceNow registrations under UEN-based identifiers. Query by participant ID, name, country (e.g. country=SG) or registration date and get XML or JSON results. Useful for checking whether a Singapore company is InvoiceNow-registered before sending e-invoices.

### Auth guide

1. No registration or credentials are required; the REST API is public.
2. Send HTTP GET requests to /search/1.0/json or /search/1.0/xml (other verbs return 405).
3. Filter with query parameters such as q, participant, name, country, regdate; multiple parameters are ANDed.
4. Page results with resultPageIndex/resultPageCount (max 1000 entries total).
5. Keep under the documented rate limit of 2 queries per second or you will receive HTTP 429.

### Example request

```
curl 'https://directory.peppol.eu/search/1.0/json?country=SG&name=singapore&beautify=true'
```

### Example response (truncated)

```json
{"version":"1.0","total-result-count":4,"matches":[{"participantID":{"scheme":"iso6523-actorid-upis","value":"0195:sguen123456789"},"entities":[{"name":"Example Pte Ltd","countryCode":"SG"}]}]}
```

### Agent notes

Genuinely free and unauthenticated, but hard rate limited at 2 q/s and capped at 1000 results per query. Participant lookups need the full scheme-prefixed identifier (e.g. iso6523-actorid-upis::0195:...); malformed identifiers return HTTP 400. SG InvoiceNow participants appear under the 0195 (SG UEN) scheme.

## Rapyd

- Page: https://singaporeapi.com/apis/rapyd
- Provider: Rapyd Financial Network
- Category: Payments
- Auth: api_key
- Pricing: contact
- Base URL: https://api.rapyd.net/v1
- Docs: https://docs.rapyd.net/

Global fintech-as-a-service platform for payments, payouts, wallets, card issuing and virtual accounts across 100+ countries. Rapyd Collect supports hundreds of local payment methods, including Singapore local rails, making it a single integration for merchants collecting in SGD and across APAC.

### Auth guide

1. Sign up for a Rapyd Client Portal account and get your access_key and secret_key from the Developers section.
2. For every request, generate a random salt (8-16 chars) and a Unix timestamp (must be within 60 seconds of actual time).
3. Compute signature = BASE64(HEX(HMAC-SHA256(http_method + url_path + salt + timestamp + access_key + secret_key + body_string))) using your secret_key.
4. Send headers on every request: access_key, salt, timestamp, signature, Content-Type: application/json (plus optional idempotency).
5. Test against the sandbox first (sandbox base URL), then switch keys and host for production.

### Example request

```
curl -X GET 'https://sandboxapi.rapyd.net/v1/data/countries' -H 'access_key: YOUR_ACCESS_KEY' -H 'salt: abcdef123456' -H 'timestamp: 1719999999' -H 'signature: COMPUTED_SIGNATURE' -H 'Content-Type: application/json'
```

### Example response (truncated)

```json
{"status":{"status":"SUCCESS","operation_id":"..."},"data":[{"id":1,"name":"Singapore","iso_alpha2":"SG","currency_code":"SGD"}]}
```

### Agent notes

Custom per-request HMAC signing (not a simple bearer header) is the main integration hurdle; sandbox is self-serve but live keys require merchant verification. Singapore local payment methods are available through Rapyd Collect. The docs do not publish a hard global rate limit or a public OpenAPI spec.

## SGX Data Connectivity / Market Data

- Page: https://singaporeapi.com/apis/sgx-data
- Provider: Singapore Exchange (SGX)
- Category: Finance & Banking
- Auth: restricted
- Pricing: paid
- Base URL: https://api.sgx.com
- Docs: https://www.sgx.com/data-connectivity

Official market data products for Singapore-listed securities and derivatives, distributed via licensed feeds and the SGX data services. Real-time and historical SGX data requires a commercial licence.

### Auth guide

1. Review data products at sgx.com/data-connectivity.
2. Contact SGX data services to licence the feed you need (fees depend on usage and redistribution).
3. Sign the market data agreement and receive connectivity credentials.
4. Alternatively use licensed redistributors (Refinitiv, Bloomberg, Xignite) if you already have those relationships.

### Example request

```
curl 'https://api.sgx.com/securities/v1.1/gtis' # unofficial endpoint used by sgx.com's own site; not a supported public API
```

### Example response (truncated)

```json
{"meta":{...},"data":[{"id":"...","n":"DBS","nc":"D05","lt":35.2}]}
```

### Agent notes

There is no free official SGX API; api.sgx.com endpoints power sgx.com itself, are undocumented and can change or be blocked without notice. For production use licensed data only.

## Shopee Open Platform API

- Page: https://singaporeapi.com/apis/shopee-open-platform
- Provider: Shopee (Sea Group)
- Category: Commerce
- Auth: oauth2
- Pricing: free
- Base URL: https://partner.shopeemobile.com/api/v2
- Docs: https://open.shopee.com

Seller and partner APIs for Singapore's biggest marketplace: product listing, orders, logistics, returns and shop management. Required integration for any SG e-commerce ERP or multichannel tool.

### Auth guide

1. Register as a developer at open.shopee.com and create an app (approval required for live category).
2. Get your partner_id and partner_key.
3. Have the seller authorize your app via the auth URL; you receive a code to exchange for shop-level access_token and refresh_token.
4. Sign every call: HMAC-SHA256 over partner_id, path, timestamp, access_token, shop_id with your partner_key, passed as the sign query param.
5. Refresh tokens every 4 hours via /auth/access_token/get.

### Example request

```
curl 'https://partner.shopeemobile.com/api/v2/product/get_item_list?partner_id=ID&timestamp=TS&access_token=TOKEN&shop_id=SHOP&sign=SIGN&offset=0&page_size=10&item_status=NORMAL'
```

### Example response (truncated)

```json
{"error":"","response":{"item":[{"item_id":178938,"item_status":"NORMAL","update_time":1704067200}],"total_count":100}}
```

### Agent notes

The per-call HMAC signature and 4-hour token expiry are the main integration pain. Use the test environment (partner.test-stable.shopeemobile.com) first.

## SingStat Table Builder API

- Page: https://singaporeapi.com/apis/singstat-tablebuilder
- Provider: Department of Statistics Singapore (Singapore official)
- Category: Statistics
- Auth: none
- Pricing: free
- Base URL: https://tablebuilder.singstat.gov.sg/api/table/tabledata/
- Docs: https://tablebuilder.singstat.gov.sg/view-api/for-developers

Programmatic access to over 2,500 official statistical tables from 70 public sector agencies: population, CPI, GDP, trade, employment and more. Query any table by its resource id.

### Auth guide

1. No key needed.
2. Find your table id (e.g. M810001) by browsing tablebuilder.singstat.gov.sg or the resourceId search API.
3. GET /api/table/tabledata/{tableId}; send an Accept: application/json header (some clients get blocked without a normal User-Agent).

### Example request

```
curl -H 'Accept: application/json' -A 'Mozilla/5.0' 'https://tablebuilder.singstat.gov.sg/api/table/tabledata/M810001?limit=1'
```

### Example response (truncated)

```json
{"Data":{"theme":"Population","id":"M810001","title":"Indicators On Population, Annual","frequency":"Annual","datasource":"SINGAPORE DEPARTMENT OF STATISTICS"}}
```

### Agent notes

Invalid table ids return 200 with a Resource Not Found body, not a 404 status; check the StatusCode field inside the JSON. Supports seriesNoORrowNo, timeFilter and limit params.

## Singapore Public Holidays

- Page: https://singaporeapi.com/apis/sg-public-holidays
- Provider: Ministry of Manpower via data.gov.sg (Singapore official)
- Category: Government Data
- Auth: none
- Pricing: free
- Base URL: https://data.gov.sg/api/action/datastore_search?resource_id=d_3751791452397f1b1c80c451447e40b7
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Official gazetted public holidays per calendar year as simple date, day and holiday-name records. One small dataset per year, published by MOM.

### Auth guide

1. No key needed.
2. Each year is a separate resource id inside the Singapore Public Holidays collection (collectionId 691) on data.gov.sg; fetch the collection metadata to enumerate them.
3. Query datastore_search with the year's resource_id.

### Example request

```
curl 'https://data.gov.sg/api/action/datastore_search?resource_id=d_3751791452397f1b1c80c451447e40b7&limit=3'
```

### Example response (truncated)

```json
{"success":true,"result":{"records":[{"_id":1,"date":"2025-01-01","day":"Wednesday","holiday":"New Year's Day"}]}}
```

### Agent notes

Resource ids change every year when MOM publishes the next year's list; resolve them at runtime via https://api-production.data.gov.sg/v2/public/api/collections/691/metadata rather than hardcoding.

## Singpass Login (OpenID Connect)

- Page: https://singaporeapi.com/apis/singpass-login
- Provider: GovTech Singapore (Singapore official)
- Category: Identity
- Auth: restricted
- Pricing: contact
- Base URL: https://stg-id.singpass.gov.sg
- Docs: https://docs.developer.singpass.gov.sg/

National digital identity login for Singapore residents, exposed to businesses as an OpenID Connect flow. Lets your app authenticate users against their Singpass credentials.

### Auth guide

1. Read the Singpass API docs at docs.developer.singpass.gov.sg.
2. Register your organisation on the Singpass Developer Portal (requires Corppass and onboarding approval).
3. Complete the linkup/onboarding process, including keys (JWKS) and redirect URI registration.
4. Integrate the OIDC flow against staging, pass their integration review, then get production access.
5. Note fees and eligibility apply for commercial relying parties.

### Example request

```
curl 'https://stg-id.singpass.gov.sg/.well-known/openid-configuration'
```

### Example response (truncated)

```json
{"issuer":"https://stg-id.singpass.gov.sg","authorization_endpoint":"https://stg-id.singpass.gov.sg/auth","token_endpoint":"..."}
```

### Agent notes

Not self-serve: onboarding approval is mandatory and takes weeks. Client assertions use signed JWTs (private_key_jwt), not client secrets. Do not promise a client Singpass login without checking their eligibility.

## Storecove

- Page: https://singaporeapi.com/apis/storecove
- Provider: Storecove
- Category: E-Invoicing (InvoiceNow)
- Auth: api_key
- Pricing: contact
- Base URL: https://api.storecove.com/api/v2
- Docs: https://www.storecove.com/docs/

E-invoicing API and Peppol access point that sends and receives invoices over the Peppol network, including Singapore InvoiceNow flows. The API supports SG:UEN participant identifiers, IRAS C5 activation endpoints for reporting invoices to IRAS, and Singapore-specific payment means such as PayNow Corporate (UEN) and GIRO.

### Auth guide

1. Request a free developer sandbox account via storecove.com/start-now.
2. In the Storecove admin panel (app.storecove.com/api_keys), click 'Create New API Key'.
3. Send the key on every request as 'Authorization: Bearer API_KEY_HERE' (keep the Bearer prefix) with Accept and Content-Type: application/json.
4. Build and test against sandbox test identifiers and simulated exchange networks.
5. Contact Storecove support to convert your account to production API keys when ready to go live.

### Example request

```
curl -X POST 'https://api.storecove.com/api/v2/discovery/receives' -H 'Accept: application/json' -H 'Authorization: Bearer API_KEY_HERE' -H 'Content-Type: application/json' --data '{"documentTypes":["invoice"],"network":"peppol","metaScheme":"iso6523-actorid-upis","scheme":"gln","identifier":"1200109963131"}'
```

### Example response (truncated)

```json
{"code":"OK","email":false}
```

### Agent notes

Sandbox is genuinely self-serve and free; production keys are issued by support after review. Strong Singapore InvoiceNow support: SG:UEN Peppol identifiers, IRAS C5 email/redirect activation endpoints, SG-only tax categories (b2c_petty_cash, b2c_point_of_sale), and sg_paynow/sg_giro payment means in the invoice JSON.

## StraitsX API (XSGD, PayNow ramps)

- Page: https://singaporeapi.com/apis/straitsx
- Provider: StraitsX (formerly Xfers)
- Category: Payments
- Auth: api_key
- Pricing: contact
- Base URL: https://api.straitsx.com
- Docs: https://docs.straitsx.com

MAS-regulated stablecoin issuer of XSGD and payments API for PayNow collections, bank transfers and fiat-to-stablecoin ramps. The bridge between SGD rails and blockchain for SG fintechs.

### Auth guide

1. Apply for a StraitsX Business account (KYB review required).
2. Get sandbox API keys from the developer dashboard once approved.
3. Authenticate with your API key per the docs (header-based).
4. Test PayNow collection and XSGD mint/redeem flows in sandbox before production enablement.

### Example request

```
curl -H 'X-XFERS-USER-API-KEY: YOUR_KEY' 'https://api.straitsx.com/api/v3/account'
```

### Example response (truncated)

```json
{"data":{"attributes":{"availableBalance":"1000.00","currency":"SGD"}}}
```

### Agent notes

Business onboarding (KYB) gates everything; no anonymous sandbox. XSGD is an ERC-20/other-chain token, so on-chain interactions are separate from the fiat API.

## Stripe (Singapore, incl. PayNow)

- Page: https://singaporeapi.com/apis/stripe-sg-paynow
- Provider: Stripe
- Category: Payments
- Auth: api_key
- Pricing: paid
- Base URL: https://api.stripe.com/v1
- Docs: https://docs.stripe.com/payments/paynow
- OpenAPI: https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json

Full-stack payments API with first-class Singapore support: cards, PayNow QR, GrabPay and Alipay through one PaymentIntents integration. The default choice for SG SaaS and online businesses.

### Auth guide

1. Create a Stripe account at dashboard.stripe.com and activate it for Singapore.
2. Copy your test secret key (sk_test_...) from Developers > API keys.
3. Enable PayNow in Dashboard > Settings > Payment methods.
4. Call the API with the key as HTTP Basic auth username (curl -u sk_test_...:).
5. Switch to live keys after completing business verification.

### Example request

```
curl https://api.stripe.com/v1/payment_intents -u sk_test_YOUR_KEY: -d amount=1000 -d currency=sgd -d 'payment_method_types[]'=paynow
```

### Example response (truncated)

```json
{"id":"pi_3...","object":"payment_intent","amount":1000,"currency":"sgd","payment_method_types":["paynow"],"status":"requires_payment_method"}
```

### Agent notes

PayNow payments are SGD-only and confirmation is asynchronous via webhook (payment_intent.succeeded). Test mode simulates the PayNow QR flow without a real bank app.

## Talenox

- Page: https://singaporeapi.com/apis/talenox
- Provider: Talenox
- Category: Finance & Banking
- Auth: token
- Pricing: contact
- Base URL: https://api.talenox.com/api/v2
- Docs: https://talenox.github.io/api-doc/

Cloud HR and payroll platform popular with Singapore SMEs, with a public REST API (v2) for employees, branches, payroll items and working days. Payroll objects carry Singapore-specific statutory fields (CPF, SDL, SHG contributions), making it useful for SG payroll integrations and HR data sync.

### Auth guide

1. Log in to your Talenox account at app.talenox.com.
2. Obtain your API token from the top-right nav bar > API setting.
3. Send it on every v2 request as 'Authorization: Bearer <token>' with Accept and Content-Type: application/json (v1 passed the token in the URL; v2 moved it to the header).
4. Alternatively create an OAuth 2.0 application in Talenox and use app.talenox.com/oauth/token to obtain and refresh access tokens with client_id/client_secret.
5. Call resource endpoints such as GET https://api.talenox.com/api/v2/branches.

### Example request

```
curl 'https://api.talenox.com/api/v2/branches' -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Bearer YOUR_API_TOKEN'
```

### Example response (truncated)

```json
[{"id":918,"name":"Justinview","employee_ids":[853],"no_of_employees":1,"address":null,"postcode":null,"head_id":null}]
```

### Agent notes

API tokens are self-serve for existing Talenox customers (token or OAuth2 app), so access effectively requires a Talenox subscription. Docs are public on GitHub Pages and include SG-specific payroll attributes (additional_sg_info_attributes: cpf, sdl, shg). No rate limits or OpenAPI spec are published.

## Taxi Availability (Live Positions)

- Page: https://singaporeapi.com/apis/lta-taxi-availability
- Provider: LTA via data.gov.sg (Singapore official)
- Category: Transport
- Auth: none
- Pricing: free
- Base URL: https://api.data.gov.sg/v1/transport/taxi-availability
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

GeoJSON MultiPoint of every available taxi in Singapore right now, refreshed about every 30 seconds. Thousands of coordinates in a single keyless call.

### Auth guide

1. No key needed; the endpoint is public.
2. Optional: request a data.gov.sg API key for higher rate limits and send it as x-api-key.

### Example request

```
curl 'https://api.data.gov.sg/v1/transport/taxi-availability'
```

### Example response (truncated)

```json
{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"MultiPoint","coordinates":[[103.6218643561,1.2941372693]]}}]}
```

### Agent notes

Coordinates are [lng, lat] GeoJSON order. taxi_count lives in properties. Great demo API since it is keyless and visibly live.

## Tazapay

- Page: https://singaporeapi.com/apis/tazapay
- Provider: Tazapay Pte Ltd
- Category: Payments
- Auth: api_key
- Pricing: contact
- Base URL: https://service.tazapay.com
- Docs: https://docs.tazapay.com/

Singapore-headquartered cross-border payments platform (MAS-regulated) offering checkout, collections, payouts, FX and escrow-style trade protection via a REST API. Live and sandbox environments are fully separated, with self-serve test keys and API-driven money movement for international B2B trade.

### Auth guide

1. Sign up and log in to the sandbox dashboard (dashboard-sandbox.tazapay.com) to generate test API_Key and API_Secret; live keys come from dashboard.tazapay.com after clearing KYB.
2. Combine them as API_Key:API_Secret (Basic Auth username:password format).
3. Base64-encode the combined string.
4. Send it on every request as 'Authorization: Basic <base64 value>' over HTTPS (HTTP requests fail).
5. Point requests at https://service-sandbox.tazapay.com for test mode and https://service.tazapay.com for live; switch keys and endpoint together.

### Example request

```
curl -X GET 'https://service-sandbox.tazapay.com/v3/balance' -H 'Authorization: Basic RjJXN0g4SldNTzgzOThLQVBXODU6cktIRkFmZkxxNUxucm1zM21PQlFpNzFvUW1NQVRIMkVCeVlEeUlSMldkMGpHZEtlZWQwOFdUaEdWUzZ2MTI1Nw=='
```

### Example response (truncated)

```json
{"status":"success","data":{"available":[{"currency":"SGD","amount":0}]}}
```

### Agent notes

Sandbox is self-serve, but real money movement, document verification and KYB only exist in live mode; Tazapay can mock success/failure responses in sandbox on request (support@tazapay.com). SG-HQ and useful for SGD + cross-border B2B collection/payout flows.

## Telegram Bot API

- Page: https://singaporeapi.com/apis/telegram-bot-api
- Provider: Telegram
- Category: Communications
- Auth: token
- Pricing: free
- Base URL: https://api.telegram.org
- Docs: https://core.telegram.org/bots/api

Free HTTP API for building Telegram bots, one of the most-used notification and community channels among Singapore developers, businesses and even government services. Instant setup with a single token from BotFather.

### Auth guide

1. In Telegram, message @BotFather and send /newbot.
2. Choose a name and username; BotFather replies with your bot token.
3. Call methods as https://api.telegram.org/bot<TOKEN>/METHOD.
4. Get your chat id by messaging the bot and calling getUpdates.

### Example request

```
curl 'https://api.telegram.org/botTOKEN/sendMessage?chat_id=123456789&text=Deploy+complete'
```

### Example response (truncated)

```json
{"ok":true,"result":{"message_id":42,"chat":{"id":123456789,"type":"private"},"text":"Deploy complete"}}
```

### Agent notes

Zero-friction: no review, no billing, works in seconds, which is why SG teams default to it for internal alerts. Use webhooks (setWebhook) instead of polling in production.

## Thunes

- Page: https://singaporeapi.com/apis/thunes
- Provider: Thunes (Singapore HQ)
- Category: Payments
- Auth: restricted
- Pricing: contact
- Docs: https://docs.thunes.com/

Singapore-headquartered B2B cross-border payments network connecting mobile wallets, banks and payout partners in 130+ countries. Public docs cover the Money Transfer API v2 (real-time transfers via quotation and transaction flows) and a Collections API; access to the network itself is by commercial agreement.

### Auth guide

1. Become a Thunes member: sign a commercial agreement and complete compliance onboarding (no self-serve signup).
2. Receive an API key and API secret plus environment-specific host URLs from Thunes.
3. Authenticate requests with HTTP Basic auth using api_key:api_secret.
4. Integrate the Money Transfer v2 flow: create a quotation, then create and confirm a transaction against it.
5. Test in the pre-production environment Thunes provisions before being enabled for production.

### Example request

```
curl -u 'API_KEY:API_SECRET' 'https://{thunes-environment-host}/v2/money-transfer/ping'
```

### Agent notes

Docs are public but everything else is gated: credentials and environment hosts are only issued after a signed member agreement and compliance review, so there is no self-serve sandbox. Relevant to SG builders as a Singapore-HQ network for wallet/bank payouts across emerging markets.

## Triple-A

- Page: https://singaporeapi.com/apis/triple-a
- Provider: Triple-A Technologies Pte Ltd
- Category: Payments
- Auth: oauth2
- Pricing: contact
- Base URL: https://api.triple-a.io
- Docs: https://developers.triple-a.io/

Singapore-based, MAS-licensed digital-asset payments provider letting businesses accept crypto/stablecoin payments and make crypto or local-currency payouts while settling in fiat. One OAuth2 token works across all API products (crypto payments, crypto payouts, local currency payouts).

### Auth guide

1. Sign up at triple-a.io/signup; credentials (dashboard login + Client ID 'oacid-...' and Client Secret) are emailed to you, including live and test/sandbox API IDs.
2. Request an access token from the token URL https://api.triple-a.io/api/v2/oauth/token using the OAuth2 Client Credentials grant (scope: client-credentials).
3. Tokens are valid for 1 hour; reuse the token rather than requesting a new one per call.
4. Send it on API requests as 'Authorization: Bearer <oauth_token>'.
5. Use your Test API ID (suffix _t) for testnet/sandbox transactions; contact support@triple-a.io to reset the client secret (this invalidates all outstanding tokens).

### Example request

```
curl -X POST 'https://api.triple-a.io/api/v2/oauth/token' -H 'Content-Type: application/x-www-form-urlencoded' -d 'client_id=oacid-XXXX&client_secret=YYYY&grant_type=client_credentials'
```

### Example response (truncated)

```json
{"access_token":"eyJhbGciOi...","token_type":"bearer","expires_in":3600}
```

### Agent notes

Self-serve signup issues sandbox (testnet) API IDs alongside live ones, so you can integrate before full merchant approval. MAS-licensed (major payment institution for digital payment token services), which matters for SG compliance-sensitive builds. Same OAuth token works across all Triple-A API products.

## Twilio API (SMS and Voice, SG numbers)

- Page: https://singaporeapi.com/apis/twilio
- Provider: Twilio
- Category: Communications
- Auth: api_key
- Pricing: paid
- Base URL: https://api.twilio.com/2010-04-01
- Docs: https://www.twilio.com/docs
- OpenAPI: https://raw.githubusercontent.com/twilio/twilio-oai/main/spec/json/twilio_api_v2010.json

Programmable SMS, voice, WhatsApp and verification APIs with Singapore phone numbers and local compliance handling (SGNIC registration for SMS sender IDs). The default CPaaS for SG OTP and notification flows.

### Auth guide

1. Sign up at twilio.com; trial account works immediately with verified numbers.
2. Copy Account SID and Auth Token from the console (or create API keys).
3. For SG alphanumeric sender IDs, register via Twilio per SGNIC/IMDA rules (mandatory since 2023, otherwise SMS shows LIKELY-SCAM).
4. Send requests with HTTP Basic auth (SID as username, token as password).

### Example request

```
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/ACXXXX/Messages.json' -u ACXXXX:AUTH_TOKEN -d 'To=+65XXXXXXXX' -d 'From=SENDER_ID' -d 'Body=Your OTP is 123456'
```

### Example response (truncated)

```json
{"sid":"SMXXXXXXXX","status":"queued","to":"+65XXXXXXXX","from":"SENDERID","body":"Your OTP is 123456"}
```

### Agent notes

SG-specific gotcha: unregistered alphanumeric sender IDs get rewritten to LIKELY-SCAM by the national SMS registry; register the sender ID before launch. Trial accounts can only message verified numbers.

## UOB API Services

- Page: https://singaporeapi.com/apis/uob-api
- Provider: UOB
- Category: Finance & Banking
- Auth: restricted
- Pricing: contact
- Base URL: https://developers.uobgroup.com
- Docs: https://www.uob.com.sg/business/digital/uob-api-services.page

UOB's business APIs for payments (PayNow and account transfers), collections, account information and status enquiries, offered to corporate customers via the UOB Infinity ecosystem. Developer portal with sandbox for experimentation.

### Auth guide

1. Review UOB API Services at uob.com.sg/business/digital/uob-api-services.page.
2. Register on the UOB developer portal (developers.uobgroup.com) for sandbox access.
3. As a UOB business customer, engage your relationship manager to enable API services on your account.
4. Complete onboarding and security setup before production credentials are issued.

### Example request

```
curl -H 'Authorization: Bearer SANDBOX_TOKEN' 'https://developers.uobgroup.com/...' # per subscribed product
```

### Example response (truncated)

```json
n/a (per-product; portal unreachable during verification)
```

### Agent notes

Verified caveat: developers.uobgroup.com was unreachable from two independent networks on 2026-07-05 (possible geo-blocking or outage); the uob.com.sg marketing/docs page is live. Confirm portal access from an SG connection before recommending.

## URA APIs (Carparks, Property, Planning)

- Page: https://singaporeapi.com/apis/ura-space-apis
- Provider: Urban Redevelopment Authority (URA) (Singapore official)
- Category: Property
- Auth: api_key
- Pricing: free
- Base URL: https://eservice.ura.gov.sg/uraDataService/invokeUraDS
- Docs: https://eservice.ura.gov.sg/maps/api/

URA's developer APIs cover season and public carpark details plus rates, private residential property transactions and rentals, and planning decisions. Token-based access via the URA Maps API service.

### Auth guide

1. Register for an AccessKey on the URA Maps API page (email form, approval by email).
2. Call the GetToken endpoint daily with your AccessKey header to receive a Token valid for that day.
3. Send both AccessKey and Token headers on data requests.
4. Pick the service param from the docs, e.g. Car_Park_Availability or PMI_Resi_Transaction.

### Example request

```
curl -H 'AccessKey: YOUR_ACCESS_KEY' -H 'Token: YOUR_DAILY_TOKEN' 'https://eservice.ura.gov.sg/uraDataService/invokeUraDS?service=Car_Park_Availability'
```

### Example response (truncated)

```json
{"Status":"Success","Result":[{"carparkNo":"A0004","lotsAvailable":"110","lotType":"C"}]}
```

### Agent notes

The daily token dance trips people up: tokens expire nightly, so fetch a fresh one each day before data calls. Private property transaction batches are quarterly (refPeriod param).

## Wallex

- Page: https://singaporeapi.com/apis/wallex
- Provider: M-DAQ Global (Wallex Technologies)
- Category: Payments
- Auth: restricted
- Pricing: contact
- Rate limit: 5 API requests per second, maximum 432,000 requests per day (custom limits on request)
- Docs: https://docs.wallex.asia/

Singapore-based cross-border payments and FX platform (part of M-DAQ Global) with a JSON REST Partner API covering users, collections, payments, conversions, balances, funding and webhooks. Built for platforms embedding multi-currency collection accounts, FX conversion and international payouts.

### Auth guide

1. Contact contact@wallextech.com to be onboarded as a partner; you receive an X-Api-Key plus an accessKeyId and secretAccessKey.
2. Include the 'X-Api-Key' header on every API request (missing/invalid key returns 403).
3. Call the Authenticate API with your accessKeyId/secretAccessKey to obtain an authorization token, valid for 8 hours (you may refresh early).
4. Send 'Authorization: Bearer <token>' on requests to restricted resources (missing token returns 401).
5. Optionally include X-Request-ID for tracing; test flows against the Wallex simulator (simulator.wallex.plus).

### Example request

```
curl 'https://{wallex-api-host}/balances' -H 'X-Api-Key: YOUR_API_KEY' -H 'Authorization: Bearer YOUR_TOKEN'
```

### Agent notes

Credentials are only issued by contacting Wallex (no self-serve signup); the API host is provided at onboarding, and a public simulator exists at simulator.wallex.plus. Docs are agent-friendly: /llms.txt index with per-endpoint .md and YAML pages. Rate limits are explicitly documented (5 rps / 432k per day).

## WhatsApp Business Cloud API

- Page: https://singaporeapi.com/apis/whatsapp-cloud-api
- Provider: Meta
- Category: Communications
- Auth: oauth2
- Pricing: freemium
- Base URL: https://graph.facebook.com/v21.0
- Docs: https://developers.facebook.com/docs/whatsapp/cloud-api

Meta-hosted API for sending and receiving WhatsApp messages at scale, the dominant business messaging channel in Singapore. Supports templates, interactive messages, media and webhooks.

### Auth guide

1. Create a Meta developer account and a Business app at developers.facebook.com.
2. Add the WhatsApp product; you get a test number and temporary token instantly.
3. Verify your business and register your own number to go beyond the 5-recipient test limit.
4. Generate a permanent system-user token with whatsapp_business_messaging permission.
5. Configure a webhook (with verify token) to receive inbound messages.

### Example request

```
curl -X POST 'https://graph.facebook.com/v21.0/PHONE_NUMBER_ID/messages' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{"messaging_product":"whatsapp","to":"65XXXXXXXX","type":"text","text":{"body":"Hello from SG"}}'
```

### Example response (truncated)

```json
{"messaging_product":"whatsapp","contacts":[{"input":"65XXXXXXXX","wa_id":"65XXXXXXXX"}],"messages":[{"id":"wamid.HBg..."}]}
```

### Agent notes

Business-initiated conversations outside the 24-hour window require pre-approved template messages. Per-conversation pricing applies once past the free tier; free-form replies only within 24h of the user's last message.

## Wise Platform API

- Page: https://singaporeapi.com/apis/wise-platform
- Provider: Wise
- Category: Payments
- Auth: token
- Pricing: freemium
- Base URL: https://api.transferwise.com
- Docs: https://docs.wise.com

API for cross-border transfers, multi-currency accounts and mid-market FX rates, fully licensed in Singapore. Widely used by SG businesses for cheap international payouts.

### Auth guide

1. Create a Wise business account.
2. Generate a personal API token under Settings > API tokens (read-only or full access).
3. Use the sandbox (api.sandbox.transferwise.tech) with a sandbox account for testing.
4. Send Authorization: Bearer TOKEN. Large-scale Wise Platform partnerships require a signed agreement and client credentials instead.

### Example request

```
curl -H 'Authorization: Bearer YOUR_TOKEN' 'https://api.transferwise.com/v1/rates?source=SGD&target=USD'
```

### Example response (truncated)

```json
[{"rate":0.779,"source":"SGD","target":"USD","time":"2026-07-05T08:00:00+0000"}]
```

### Agent notes

The rates endpoint is the simplest first call. Transfers require the quote, recipient, transfer, fund sequence in that order; SCA (2FA signing) applies to funding from some regions.

## Xero Accounting API

- Page: https://singaporeapi.com/apis/xero
- Provider: Xero
- Category: Finance & Banking
- Auth: oauth2
- Pricing: freemium
- Rate limit: 60 calls/min and 5,000 calls/day per tenant (documented by Xero)
- Base URL: https://api.xero.com/api.xro/2.0
- Docs: https://developer.xero.com/documentation
- OpenAPI: https://raw.githubusercontent.com/XeroAPI/Xero-OpenAPI/master/xero_accounting.yaml

Accounting API for the platform most SG SMEs and accountants run on: invoices, contacts, bank transactions, payroll and reports. Essential for any SG ERP or fintech that syncs books.

### Auth guide

1. Create a free developer account at developer.xero.com and add an app.
2. Configure the OAuth 2.0 redirect URI and copy client id/secret.
3. Run the authorization code flow requesting scopes like accounting.transactions offline_access.
4. Exchange the code for access + refresh tokens; access tokens last 30 minutes.
5. Call the API with Authorization: Bearer and the xero-tenant-id header from the connections endpoint.

### Example request

```
curl -H 'Authorization: Bearer ACCESS_TOKEN' -H 'xero-tenant-id: TENANT_ID' -H 'Accept: application/json' 'https://api.xero.com/api.xro/2.0/Invoices?page=1'
```

### Example response (truncated)

```json
{"Invoices":[{"InvoiceID":"...","Type":"ACCREC","Contact":{"Name":"ABC Pte Ltd"},"AmountDue":214.00,"Status":"AUTHORISED"}]}
```

### Agent notes

Forgetting the xero-tenant-id header is the classic 403 cause. Refresh tokens rotate on every use; persist the newest one atomically.

## data.gov.sg Datastore Search API

- Page: https://singaporeapi.com/apis/datagovsg-datastore-search
- Provider: GovTech / data.gov.sg (Singapore official)
- Category: Government Data
- Auth: none
- Pricing: free
- Base URL: https://data.gov.sg/api/action/datastore_search
- Docs: https://guide.data.gov.sg/developer-guide/api-overview

Generic query API over thousands of Singapore government datasets: pass any dataset's resource id to get filtered, paginated JSON records. One API shape unlocks the whole data.gov.sg catalogue.

### Auth guide

1. No key needed for standard queries.
2. Find a dataset id (d_xxx...) from its data.gov.sg dataset page URL.
3. GET datastore_search with resource_id, plus optional limit, offset, q and filters params.
4. Optional: request an API key from data.gov.sg for higher rate limits (x-api-key header).

### Example request

```
curl 'https://data.gov.sg/api/action/datastore_search?resource_id=d_8b84c4ee58e3cfc0ece0d773c8ca6abc&limit=1'
```

### Example response (truncated)

```json
{"success":true,"result":{"resource_id":"d_8b84c4ee58e3cfc0ece0d773c8ca6abc","fields":[{"type":"text","id":"month"}],"records":[{"_id":1,"month":"2017-01"}]}}
```

### Agent notes

filters param takes URL-encoded JSON, e.g. filters={"town":"ANG MO KIO"}. For file-type datasets (GeoJSON, CSV downloads) use the poll-download API on api-open.data.gov.sg instead.
