API v2 Shortener
Gumawa at pamahalaan ang maiikling link mula sa iyong app. Base URL: https://api.s.id/v2. Kasalukuyang bersyon 2.0.0, at available ang buong specification sa format na OpenAPI.
Interaktibong sanggunianPagpapatotoo
Ipadala ang API key sk_live_... o OAuth 2.0 access token sa header na Authorization: Bearer. Gumawa ng API key sa Dashboard > Developer; ang bawat key ay gagamit lang ng scope na pipiliin mo.
| Saklaw | Akses |
|---|---|
links:read | Ilista at basahin ang mga link |
links:write | Gumawa at mag-update ng mga link (gumawa, mag-edit, magbalik) |
links:archive | Mag-archive ng mga link |
links:analytics | Basahin ang click statistics at kabuuang bilang para sa bawat link |
Authorization: Bearer sk_live_...Gumawa ng link
Ipadala ang POST /links kasama ang destination URL. Awtomatikong gagawin ang slug kung walang laman ang custom_slug.
curl -X POST https://api.s.id/v2/links \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"long_url": "https://example.com/long-url", "custom_slug": "[your-alias]"}'| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
long_url | string | Oo | URL ng destinasyon |
title | string | Hindi | Pamagat ng link |
custom_slug | string | Hindi | Custom slug; awtomatikong ginagawa kapag walang laman |
password | string | Hindi | Password na nagpoprotekta sa link |
expired_at | integer | Hindi | Oras ng pag-expire bilang Unix timestamp (segundo) |
domain_alias | string | Hindi | Custom domain na ginagamit sa halip na s.id |
Halimbawang tugon:
{
"data": {
"id": 123,
"short": "[your-alias]",
"short_url": "https://s.id/[your-alias]",
"long_url": "https://example.com/long-url",
"microsite": false,
"protected": false,
"disposable": false,
"adult": false
},
"message": "link_created"
}Mga endpoint
Links
GET/linksIlista ang mga link
Returns a paginated list of the authenticated user's links.
Base URL: https://api.s.id/v2 · Saklaw: links:read
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
page | query | integer | Hindi | |
limit | query | integer | Hindi | |
search | query | string | Hindi | Filter by short code or URL |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | List of links |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
POST/linksGumawa ng link
Base URL: https://api.s.id/v2 · Saklaw: links:write
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
long_url | string | Oo | The destination (long) URL |
title | string | Hindi | |
custom_slug | string | Hindi | Custom short code; auto-generated when omitted |
password | string | Hindi | Optional password to protect the link |
expired_at | integer | Hindi | Optional expiry as a Unix timestamp (seconds) |
domain_alias | string | Hindi | Custom domain to use instead of s.id |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | A single link |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
422 | Request validation failed |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
POST/links/availableTingnan kung available ang slug
Checks whether a custom slug is available before creating a link.
Base URL: https://api.s.id/v2 · Saklaw: links:read
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
short | string | Oo | |
domain_alias | string | Hindi | Custom domain, if any |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Slug is available |
401 | Missing or invalid API key |
422 | Slug is taken or invalid |
GET/links/{short}Kunin ang link
Base URL: https://api.s.id/v2 · Saklaw: links:read
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo | The short code of the link |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | A single link |
401 | Missing or invalid API key |
404 | Resource not found |
PUT/links/{short}I-update ang link
Updates a link. All fields are optional; omitted fields are left unchanged.
- password: set a non-empty string to protect, empty string "" to remove protection.
- custom_slug: rename the short code (subject to quota).
- archive_at: schedule auto-archive on a date (YYYY-MM-DD).
- domain_alias: change the custom domain (must be owned by the user).
Base URL: https://api.s.id/v2 · Saklaw: links:write
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo | The short code of the link |
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
long_url | string | Hindi | New destination URL |
title | string | Hindi | |
custom_slug | string | Hindi | Rename the short code (subject to plan quota) |
password | string | Hindi | Set a password ("" removes existing protection) |
disposable | boolean | Hindi | Mark link as disposable (expires after first click) |
adult | boolean | Hindi | Flag link as adult content |
archive_at | string | Hindi | Schedule auto-archive on this date (YYYY-MM-DD) |
domain_alias | string | Hindi | Change the custom domain (must be owned by the user) |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | A single link |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
422 | Request validation failed |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
DELETE/links/{short}I-archive ang link
Archives (soft-deletes) a link. The short code stops resolving. Use POST /links/{short}/unarchive to restore.
Base URL: https://api.s.id/v2 · Saklaw: links:archive
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo | The short code of the link |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Link archived |
401 | Missing or invalid API key |
404 | Resource not found |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
POST/links/{short}/unarchiveIbalik ang naka-archive na link
Restores a previously archived link, making its short code resolve again.
Base URL: https://api.s.id/v2 · Saklaw: links:write
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo | The short code of the archived link |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Link restored |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
GET/links/{short}/statsTimeline ng mga click sa link
Returns a date-bucketed click-count timeline for the link.
Base URL: https://api.s.id/v2 · Saklaw: links:analytics
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo | |
start | query | string | Hindi | |
end | query | string | Hindi |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Click timeline |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
GET/links/{short}/stats/lifetimeKabuuang bilang ng click
Returns the all-time total click count for a single link.
Base URL: https://api.s.id/v2 · Saklaw: links:analytics
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Lifetime click count |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
POST/links/bulkGumawa ng maraming link
Create up to 100 short links in a single request. Requires a subscription plan with bulk shortening enabled. Each item reports individual success/failure — the overall request always returns 200 even if some items fail.
Base URL: https://api.s.id/v2 · Saklaw: links:write
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
links | object[] | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Bulk result — individual items may have success=false |
401 | Missing or invalid API key |
402 | Plan upgrade required (bulk shortening not in plan) |
403 | API key lacks the required scope |
User
GET/userKunin ang authenticated user
Base URL: https://api.s.id/v2 · Saklaw: user:read
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | User profile |
401 | Missing or invalid API key |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
GET/quotaKunin ang account quota
Returns the authenticated user's current plan limits and usage counters.
Base URL: https://api.s.id/v2 · Saklaw: user:read
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Account quota |
401 | Missing or invalid API key |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
QR
GET/qrKunin ang global QR settings
Returns the account-level (global) QR code settings applied to QR codes by default.
Base URL: https://api.s.id/v2 · Saklaw: qr:read
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Global QR settings |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
PUT/qrI-customize ang global QR settings
Updates the account-level (global) QR code settings. All fields are optional; omitted fields are left unchanged.
Base URL: https://api.s.id/v2 · Saklaw: qr:write
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
logo | string | Hindi | URL of the logo image embedded in the QR code |
color | string | Hindi | Foreground color as a hex value, e.g. #1a56db |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Updated global QR settings |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
422 | Request validation failed |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
GET/links/{short}/qrKunin ang QR settings ng link
Returns the QR code settings for a single link.
Base URL: https://api.s.id/v2 · Saklaw: qr:read
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo | The short code of the link |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Link QR settings |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
PUT/links/{short}/qrI-customize ang QR settings ng link
Updates the QR code settings for a single link. All fields are optional; omitted fields are left unchanged.
Base URL: https://api.s.id/v2 · Saklaw: qr:write
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
short | path | string | Oo | The short code of the link |
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
logo | string | Hindi | URL of the logo image embedded in the QR code |
color | string | Hindi | Foreground color as a hex value, e.g. #1a56db |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Updated link QR settings |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
422 | Request validation failed |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
Microsites
GET/micrositesIlista ang mga microsite
Returns a paginated list of microsites owned by the authenticated user.
Base URL: https://api.s.id/v2 · Saklaw: microsites:read
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
limit | query | integer | Hindi | |
after | query | string | Hindi | Cursor for the next page (opaque string from previous response) |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | List of microsites |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
POST/micrositesGumawa ng microsite
Base URL: https://api.s.id/v2 · Saklaw: microsites:write
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
slug | string | Oo | URL-safe identifier (alphanumeric + hyphens/underscores) |
title | string | Oo | |
kind | string | Oo | Microsite category (e.g. personal_branding, brand, other) |
theme | string | Hindi | Theme slug (optional, defaults to the platform default) |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Microsite created |
400 | Validation error (slug already taken, quota exceeded, etc.) |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
GET/microsites/{slug}Kunin ang microsite
Base URL: https://api.s.id/v2 · Saklaw: microsites:read
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Microsite detail |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Microsite not found |
PUT/microsites/{slug}I-update ang microsite
Patches title, description, and/or visibility. All fields are optional.
Base URL: https://api.s.id/v2 · Saklaw: microsites:write
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo |
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
title | string | Hindi | |
description | string | Hindi | |
hide | boolean | Hindi | Set true to hide the microsite from public (requires plan that supports visibility toggle) |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Updated microsite |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Microsite not found |
DELETE/microsites/{slug}I-delete ang microsite
Base URL: https://api.s.id/v2 · Saklaw: microsites:delete
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Microsite deleted |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Microsite not found |
POST/microsites/availableTingnan kung available ang microsite slug
Checks whether a microsite slug is available before creating a microsite.
Base URL: https://api.s.id/v2 · Saklaw: microsites:read
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
slug | string | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Slug availability result |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
GET/microsites/{slug}/componentsIlista ang mga microsite component
Returns the components belonging to a microsite, in display order.
Base URL: https://api.s.id/v2 · Saklaw: microsites:read
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo | The slug of the microsite |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | List of microsite components |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
POST/microsites/{slug}/componentsMagdagdag ng microsite component
Adds a new component to a microsite.
The body is { kind, data, tag? }. The shape of the data object depends on kind. Unknown fields are ignored, validation is per-kind, and invalid input returns 422. All color fields are hex strings (e.g. #1a56db).
**Kinds:** PROFILE, LINK, HORIZONTAL_LINK, TEXT, IMAGE, MEDIA, DIVIDER, COUNTDOWN, MAPS, IMAGE_SLIDE, CV, AUTOPLAY_MUSIC, CONTACT, CALENDAR, SHOP_LISTING, SHOP_ITEM, SHOP_LEADERBOARD.
**Rules:**
- PROFILE, CV and AUTOPLAY_MUSIC are unique — at most one per microsite.
- IMAGE_SLIDE requires a plan with the Image Slide feature.
- On create the password is always stored empty — set or change it via update (PUT).
- Image fields (image, imageBackground, slide image) must be a local asset path, not a remote URL — they must match [/.a-zA-Z0-9_-]+.(jpg|jpeg|png|svg|webp|gif|bmp); any value containing a scheme (https://), //, or .. is rejected.
**Shared field groups** (a kind that lists a group accepts all of its fields inside data):
- **Button styling** (LINK, CONTACT, CALENDAR): icon (string, max 255), textFont (string, max 100), textPosition (string, max 100), buttonEffect (string, max 100), buttonColor (hex, max 20), buttonBorderColor (hex, max 20), buttonIconBackground (hex, max 20), buttonShadowColor (hex, max 20).
- **Spoiler reveal** (TEXT, IMAGE, MEDIA, MAPS, IMAGE_SLIDE, SHOP_LEADERBOARD): isSpoiler (bool), spoilerButtonText (string, max 140), spoilerButtonTextPosition (string, max 100), spoilerButtonIcon (string), spoilerButtonColor (hex, max 20), spoilerButtonFont (string, max 100), spoilerBackground (string, max 100), spoilerBackgroundOpacity (string, max 100), spoilerButtonBorderColor (hex, max 20), spoilerButtonIconBackground (hex, max 20), spoilerButtonShadowColor (hex, max 20).
- **Password protection** (LINK, TEXT, IMAGE, MEDIA, MAPS, IMAGE_SLIDE, CONTACT, CV, SHOP_LEADERBOARD): passwordActive (bool), password (string, max 255 — set via update only), passwordMessage (string, max 255).
Base URL: https://api.s.id/v2 · Saklaw: microsites:write
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo | The slug of the microsite |
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
kind | PROFILE | LINK | HORIZONTAL_LINK | TEXT | IMAGE | MEDIA | DIVIDER | COUNTDOWN | MAPS | IMAGE_SLIDE | CV | AUTOPLAY_MUSIC | CONTACT | CALENDAR | SHOP_LISTING | SHOP_ITEM | SHOP_LEADERBOARD | Oo | Component kind. The shape of data depends on this value. |
data | object | Oo | Kind-specific component data. Its shape depends on kind. See the operation description and examples below. |
tag | string | Hindi | Optional grouping tag |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Component created |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
422 | Request validation failed |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
PUT/microsites/{slug}/components/{componentId}I-update ang microsite component
Updates a single microsite component.
Base URL: https://api.s.id/v2 · Saklaw: microsites:write
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo | The slug of the microsite |
componentId | path | string | Oo | The component ID |
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
active | boolean | Oo | Whether the component is shown |
kind | string | Oo | Component kind (e.g. LINK, PROFILE, TEXT) |
data | object | Oo | Kind-specific component data |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Component updated |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
422 | Request validation failed |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
DELETE/microsites/{slug}/components/{componentId}I-delete ang microsite component
Deletes a single microsite component.
Base URL: https://api.s.id/v2 · Saklaw: microsites:delete
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo | The slug of the microsite |
componentId | path | string | Oo | The component ID |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Component deleted |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
POST/microsites/{slug}/components/orderAyusin ang pagkakasunod ng mga microsite component
Reorders a microsite's components according to the provided list of component IDs.
Base URL: https://api.s.id/v2 · Saklaw: microsites:write
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
slug | path | string | Oo | The slug of the microsite |
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
orders | string[] | Oo | Component IDs in the desired display order |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Components reordered |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
404 | Resource not found |
422 | Request validation failed |
429 | Too many requests. Per-tier limits apply, resolved from your s.id plan: a per-credential per-minute rate limit (rate_limit_exceeded) and a daily call quota (api_quota_exceeded), both shared across every integration using your credential (sk_live_* key or OAuth token). OAuth apps also have a secondary per-client_id ceiling (client_rate_limit_exceeded) across all their users' tokens. See GET /v2/quota for your current standing, and the X-RateLimit-* / X-Quota-* response headers. |
OAuth 2.0
GET/oauth/authorizeGet consent screen data
A plain browser navigation here (no Accept: application/json) 302-redirects to the dash.s.id consent UI, preserving the query string. With Accept: application/json, returns application name, logo, and requested scopes for the consent UI to render.
Base URL: https://api.s.id
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
client_id | query | string | Oo | |
redirect_uri | query | string | Oo | |
response_type | query | code | Oo | |
scope | query | string | Hindi | |
state | query | string | Hindi | Recommended. Opaque value for CSRF protection. Returned unchanged in the redirect. |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Consent screen data |
400 | Bad request |
POST/oauth/tokenExchange code or refresh token
Base URL: https://api.s.id
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
grant_type | authorization_code | refresh_token | Hindi | |
code | string | Hindi | |
redirect_uri | string | Hindi | |
client_id | string | Hindi | |
client_secret | string | Hindi | |
refresh_token | string | Hindi |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Token response |
400 | Invalid grant, unsupported_grant_type, or invalid_client |
401 | Invalid client credentials |
POST/oauth/revokeRevoke a token
Revokes an access or refresh token. Always returns 200 OK regardless of whether the token was valid (RFC 7009).
Base URL: https://api.s.id
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
token | string | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Token revoked |
POST/oauth/introspectIntrospect a token
Reports whether a token is currently active and, if so, which scopes and client it belongs to (RFC 7662). Client-credential protected: client_id/client_secret identify the caller, not the token owner. Always returns 200 — including for an unknown, expired, or revoked token ({"active": false}) — to avoid leaking token validity to unauthenticated probing.
Base URL: https://api.s.id
Request body
| Patlang | Uri | Kailangan | Paglalarawan |
|---|---|---|---|
token | string | Oo | |
client_id | string | Oo | |
client_secret | string | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Introspection result |
400 | Missing token/client_id, or invalid client credentials |
GET/oauth/userinfoGet authorized user profile
Returns the profile of the user who authorized the OAuth app. Requires Authorization: Bearer <access_token> (the OAuth access token, not an sk_live_ key).
Base URL: https://api.s.id · Saklaw: user:read
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | User profile |
401 | Unauthorized |
GET/.well-known/oauth-authorization-serverOAuth 2.0 Authorization Server Metadata
RFC 8414 discovery document advertising every OAuth endpoint URL, supported scopes, and PKCE methods, so standards-compliant client libraries can configure themselves instead of hard-coding s.id's URLs.
Base URL: https://api.s.id
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Authorization server metadata |
GET/api/user/oauth/appsList apps authorized by the current user
Returns all OAuth clients that have active tokens for the authenticated user. Auth: user session cookie (not API key).
Base URL: https://api.s.id
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | List of connected apps |
401 | Unauthorized |
DELETE/api/user/oauth/apps/{clientId}Revoke all tokens for an app
Revokes all active tokens granted by the current user to the specified OAuth client.
Base URL: https://api.s.id
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
clientId | path | string | Oo |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | App access revoked |
401 | Unauthorized |
404 | App not found |
Analytics
GET/statsClick analytics sa antas ng account
Returns a timeline of clicks plus breakdowns by top links, referers, locations, devices, and browsers for the authenticated account. Date range is gated by subscription plan.
Base URL: https://api.s.id/v2 · Saklaw: links:analytics
Mga parameter
| Patlang | Lokasyon | Uri | Kailangan | Paglalarawan |
|---|---|---|---|---|
start | query | string | Hindi | Start date (YYYY-MM-DD). Defaults to 30 days ago. |
end | query | string | Hindi | End date (YYYY-MM-DD). Defaults to today. |
additional | query | boolean | Hindi | Include referer, location, device, browser breakdowns |
Mga response
| Kodigo | Paglalarawan |
|---|---|
200 | Account analytics |
401 | Missing or invalid API key |
403 | API key lacks the required scope |
Mga limitasyon at error
Limitado kada minuto ang bawat credential. Tingnan ang iyong quota gamit ang GET /quota.
| Kredensyal | Limitasyon |
|---|---|
| API key o OAuth access token | 38 na request kada minuto |
| OAuth app (lahat ng token pinagsama) | 500 na request kada minuto |
| Kodigo | Ibig sabihin |
|---|---|
400 | Mali ang format o hindi suportado ang request |
401 | Wala, hindi valid, binawi, o expired ang credential |
403 | Wala sa credential ang kinakailangang scope |
404 | Hindi nahanap ang hiniling na resource |
422 | Nabigo ang request validation |
429 | Lumampas sa rate limit |