Lumaktaw sa pangunahing nilalaman
s.id Logo
Tingnan ang Markdown

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 sanggunian

Pagpapatotoo

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.

SaklawAkses
links:readIlista at basahin ang mga link
links:writeGumawa at mag-update ng mga link (gumawa, mag-edit, magbalik)
links:archiveMag-archive ng mga link
links:analyticsBasahin ang click statistics at kabuuang bilang para sa bawat link
http
Authorization: Bearer sk_live_...

Kumpletong gabay sa autentikasyon

Ipadala ang POST /links kasama ang destination URL. Awtomatikong gagawin ang slug kung walang laman ang custom_slug.

bash
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]"}'
PatlangUriKailanganPaglalarawan
long_urlstringOoURL ng destinasyon
titlestringHindiPamagat ng link
custom_slugstringHindiCustom slug; awtomatikong ginagawa kapag walang laman
passwordstringHindiPassword na nagpoprotekta sa link
expired_atintegerHindiOras ng pag-expire bilang Unix timestamp (segundo)
domain_aliasstringHindiCustom domain na ginagamit sa halip na s.id

Halimbawang tugon:

json
{
  "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

Nananatili lang ang key sa pahinang ito hanggang i-reload. I-clear ito kapag tapos ka na.

User

GET/user

Base URL: https://api.s.id/v2 · Saklaw: user:read

Mga response

KodigoPaglalarawan
200User profile
401Missing or invalid API key
429Too 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.
Subukan ang APISaklaw: user:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

GET/quota

Returns the authenticated user's current plan limits and usage counters.

Base URL: https://api.s.id/v2 · Saklaw: user:read

Mga response

KodigoPaglalarawan
200Account quota
401Missing or invalid API key
429Too 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.
Subukan ang APISaklaw: user:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

QR

GET/qr

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

KodigoPaglalarawan
200Global QR settings
401Missing or invalid API key
403API key lacks the required scope
429Too 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.
Subukan ang APISaklaw: qr:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

PUT/qr

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

PatlangUriKailanganPaglalarawan
logostringHindiURL of the logo image embedded in the QR code
colorstringHindiForeground color as a hex value, e.g. #1a56db

Mga response

KodigoPaglalarawan
200Updated global QR settings
401Missing or invalid API key
403API key lacks the required scope
422Request validation failed
429Too 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.
Subukan ang APISaklaw: qr:write

I-save ang iyong API key sa itaas para makapagpadala ng request.

GET/links/{short}/qr

Returns the QR code settings for a single link.

Base URL: https://api.s.id/v2 · Saklaw: qr:read

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
shortpathstringOoThe short code of the link

Mga response

KodigoPaglalarawan
200Link QR settings
401Missing or invalid API key
403API key lacks the required scope
404Resource not found
429Too 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.
Subukan ang APISaklaw: qr:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

PUT/links/{short}/qr

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

PatlangLokasyonUriKailanganPaglalarawan
shortpathstringOoThe short code of the link

Request body

PatlangUriKailanganPaglalarawan
logostringHindiURL of the logo image embedded in the QR code
colorstringHindiForeground color as a hex value, e.g. #1a56db

Mga response

KodigoPaglalarawan
200Updated link QR settings
401Missing or invalid API key
403API key lacks the required scope
404Resource not found
422Request validation failed
429Too 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.
Subukan ang APISaklaw: qr:write

I-save ang iyong API key sa itaas para makapagpadala ng request.

Microsites

GET/microsites

Returns a paginated list of microsites owned by the authenticated user.

Base URL: https://api.s.id/v2 · Saklaw: microsites:read

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
limitqueryintegerHindi
afterquerystringHindiCursor for the next page (opaque string from previous response)

Mga response

KodigoPaglalarawan
200List of microsites
401Missing or invalid API key
403API key lacks the required scope
Subukan ang APISaklaw: microsites:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

POST/microsites

Base URL: https://api.s.id/v2 · Saklaw: microsites:write

Request body

PatlangUriKailanganPaglalarawan
slugstringOoURL-safe identifier (alphanumeric + hyphens/underscores)
titlestringOo
kindstringOoMicrosite category (e.g. personal_branding, brand, other)
themestringHindiTheme slug (optional, defaults to the platform default)

Mga response

KodigoPaglalarawan
200Microsite created
400Validation error (slug already taken, quota exceeded, etc.)
401Missing or invalid API key
403API key lacks the required scope
Subukan ang APISaklaw: microsites:write

I-save ang iyong API key sa itaas para makapagpadala ng request.

GET/microsites/{slug}

Base URL: https://api.s.id/v2 · Saklaw: microsites:read

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOo

Mga response

KodigoPaglalarawan
200Microsite detail
401Missing or invalid API key
403API key lacks the required scope
404Microsite not found
Subukan ang APISaklaw: microsites:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

PUT/microsites/{slug}

Patches title, description, and/or visibility. All fields are optional.

Base URL: https://api.s.id/v2 · Saklaw: microsites:write

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOo

Request body

PatlangUriKailanganPaglalarawan
titlestringHindi
descriptionstringHindi
hidebooleanHindiSet true to hide the microsite from public (requires plan that supports visibility toggle)

Mga response

KodigoPaglalarawan
200Updated microsite
401Missing or invalid API key
403API key lacks the required scope
404Microsite not found
Subukan ang APISaklaw: microsites:write

I-save ang iyong API key sa itaas para makapagpadala ng request.

DELETE/microsites/{slug}

Base URL: https://api.s.id/v2 · Saklaw: microsites:delete

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOo

Mga response

KodigoPaglalarawan
200Microsite deleted
401Missing or invalid API key
403API key lacks the required scope
404Microsite not found
Subukan ang APISaklaw: microsites:delete

I-save ang iyong API key sa itaas para makapagpadala ng request.

POST/microsites/available

Checks whether a microsite slug is available before creating a microsite.

Base URL: https://api.s.id/v2 · Saklaw: microsites:read

Request body

PatlangUriKailanganPaglalarawan
slugstringOo

Mga response

KodigoPaglalarawan
200Slug availability result
401Missing or invalid API key
403API key lacks the required scope
429Too 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.
Subukan ang APISaklaw: microsites:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

GET/microsites/{slug}/components

Returns the components belonging to a microsite, in display order.

Base URL: https://api.s.id/v2 · Saklaw: microsites:read

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOoThe slug of the microsite

Mga response

KodigoPaglalarawan
200List of microsite components
401Missing or invalid API key
403API key lacks the required scope
404Resource not found
429Too 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.
Subukan ang APISaklaw: microsites:read

I-save ang iyong API key sa itaas para makapagpadala ng request.

POST/microsites/{slug}/components

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

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOoThe slug of the microsite

Request body

PatlangUriKailanganPaglalarawan
kindPROFILE | LINK | HORIZONTAL_LINK | TEXT | IMAGE | MEDIA | DIVIDER | COUNTDOWN | MAPS | IMAGE_SLIDE | CV | AUTOPLAY_MUSIC | CONTACT | CALENDAR | SHOP_LISTING | SHOP_ITEM | SHOP_LEADERBOARDOoComponent kind. The shape of data depends on this value.
dataobjectOoKind-specific component data. Its shape depends on kind. See the operation description and examples below.
tagstringHindiOptional grouping tag

Mga response

KodigoPaglalarawan
200Component created
401Missing or invalid API key
403API key lacks the required scope
404Resource not found
422Request validation failed
429Too 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.
Subukan ang APISaklaw: microsites:write

I-save ang iyong API key sa itaas para makapagpadala ng request.

PUT/microsites/{slug}/components/{componentId}

Updates a single microsite component.

Base URL: https://api.s.id/v2 · Saklaw: microsites:write

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOoThe slug of the microsite
componentIdpathstringOoThe component ID

Request body

PatlangUriKailanganPaglalarawan
activebooleanOoWhether the component is shown
kindstringOoComponent kind (e.g. LINK, PROFILE, TEXT)
dataobjectOoKind-specific component data

Mga response

KodigoPaglalarawan
200Component updated
401Missing or invalid API key
403API key lacks the required scope
404Resource not found
422Request validation failed
429Too 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.
Subukan ang APISaklaw: microsites:write

I-save ang iyong API key sa itaas para makapagpadala ng request.

DELETE/microsites/{slug}/components/{componentId}

Deletes a single microsite component.

Base URL: https://api.s.id/v2 · Saklaw: microsites:delete

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOoThe slug of the microsite
componentIdpathstringOoThe component ID

Mga response

KodigoPaglalarawan
200Component deleted
401Missing or invalid API key
403API key lacks the required scope
404Resource not found
429Too 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.
Subukan ang APISaklaw: microsites:delete

I-save ang iyong API key sa itaas para makapagpadala ng request.

POST/microsites/{slug}/components/order

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

PatlangLokasyonUriKailanganPaglalarawan
slugpathstringOoThe slug of the microsite

Request body

PatlangUriKailanganPaglalarawan
ordersstring[]OoComponent IDs in the desired display order

Mga response

KodigoPaglalarawan
200Components reordered
401Missing or invalid API key
403API key lacks the required scope
404Resource not found
422Request validation failed
429Too 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.
Subukan ang APISaklaw: microsites:write

I-save ang iyong API key sa itaas para makapagpadala ng request.

OAuth 2.0

GET/oauth/authorize

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

PatlangLokasyonUriKailanganPaglalarawan
client_idquerystringOo
redirect_uriquerystringOo
response_typequerycodeOo
scopequerystringHindi
statequerystringHindiRecommended. Opaque value for CSRF protection. Returned unchanged in the redirect.

Mga response

KodigoPaglalarawan
200Consent screen data
400Bad request
POST/oauth/token

Base URL: https://api.s.id

Request body

PatlangUriKailanganPaglalarawan
grant_typeauthorization_code | refresh_tokenHindi
codestringHindi
redirect_uristringHindi
client_idstringHindi
client_secretstringHindi
refresh_tokenstringHindi

Mga response

KodigoPaglalarawan
200Token response
400Invalid grant, unsupported_grant_type, or invalid_client
401Invalid client credentials
POST/oauth/revoke

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

PatlangUriKailanganPaglalarawan
tokenstringOo

Mga response

KodigoPaglalarawan
200Token revoked
POST/oauth/introspect

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

PatlangUriKailanganPaglalarawan
tokenstringOo
client_idstringOo
client_secretstringOo

Mga response

KodigoPaglalarawan
200Introspection result
400Missing token/client_id, or invalid client credentials
GET/oauth/userinfo

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

KodigoPaglalarawan
200User profile
401Unauthorized
GET/.well-known/oauth-authorization-server

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

KodigoPaglalarawan
200Authorization server metadata
GET/api/user/oauth/apps

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

KodigoPaglalarawan
200List of connected apps
401Unauthorized
DELETE/api/user/oauth/apps/{clientId}

Revokes all active tokens granted by the current user to the specified OAuth client.

Base URL: https://api.s.id

Mga parameter

PatlangLokasyonUriKailanganPaglalarawan
clientIdpathstringOo

Mga response

KodigoPaglalarawan
200App access revoked
401Unauthorized
404App not found

Analytics

GET/stats

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

PatlangLokasyonUriKailanganPaglalarawan
startquerystringHindiStart date (YYYY-MM-DD). Defaults to 30 days ago.
endquerystringHindiEnd date (YYYY-MM-DD). Defaults to today.
additionalquerybooleanHindiInclude referer, location, device, browser breakdowns

Mga response

KodigoPaglalarawan
200Account analytics
401Missing or invalid API key
403API key lacks the required scope
Subukan ang APISaklaw: links:analytics

I-save ang iyong API key sa itaas para makapagpadala ng request.

Mga limitasyon at error

Limitado kada minuto ang bawat credential. Tingnan ang iyong quota gamit ang GET /quota.

KredensyalLimitasyon
API key o OAuth access token38 na request kada minuto
OAuth app (lahat ng token pinagsama)500 na request kada minuto
KodigoIbig sabihin
400Mali ang format o hindi suportado ang request
401Wala, hindi valid, binawi, o expired ang credential
403Wala sa credential ang kinakailangang scope
404Hindi nahanap ang hiniling na resource
422Nabigo ang request validation
429Lumampas sa rate limit