← Developers
Start here
QuickstartSDKAuthentication
Identity
Sign in with Shin ID
Access
EntitlementsUsage & Qualified Active Days
Money
Purchases & refundsWebhooksVerifying signatures
Selling
Importing a productGitHub importSelling without the SDKCurrencies and pricingBuy with Guiru from your own site
Operating
Integration diagnosticsErrors & rate limitsTestingMobile API
Reference
ReferenceVersioning & changesFor agents
Machine-readable
llms.txt
Access

Entitlements

One call that answers whether this person may use your product, and why.

It also counts as evidenceMemberCaching
GET/api/v1/entitlements?user_id=<uuid>
auth · gk_live_…

Server to server. The product is the key's product; user_id is the Shin ID.

Response
activeboolean
The only field your gate should branch on.
typestring | null
purchase, subscription, member, complimentary. Why they have it — useful for your own analytics, not for the gate.
sourcestring | null
Where it came from: the payment reference, member, or an operator grant.
ends_atISO 8601 | null
When it stops. null means it does not expire on its own. A cancelled subscription keeps active: true until this date.
test_modeboolean
True when a gk_test_ key answered.
Note

Do not compare ends_at yourself to decide access. active already accounts for it. Two clocks are one clock too many.

It also counts as evidence

A live entitlement check is recorded as usage for your analytics. Made with your API key it is your server vouching for itself, so it never counts toward a Qualified Active Day; the same check made from your app with the person's own access token (/api/v1/me) does. A product that only ever checks access at launch is still visible in analytics — it just says less than one that reports usage.

Member

When a product is Included with Member, every subscriber gets active: true with type: "member" and no purchase behind it. Your gate should not care which: the whole point of the entitlement call is that access has one shape regardless of how it was paid for.

Caching

Responses are cache-control: no-store. Cache in your own process for minutes, not hours, and let a webhook invalidate it — a refund that takes an hour to close the door is a refund your support inbox hears about.

PreviousSign in with Shin IDNextUsage & Qualified Active Days
Guiru
AboutStoreHow Guiru worksQuality BarGSPGuiru MemberStatus
Buying
Buy with GuiruYour libraryRefundsBuyer termsTrust & safety
Builders
For buildersSubmit a productGuiru ProPricing & feesPromoteDeveloper docs
Help
Help centreYour libraryBuying & refundsHow a product gets listedHow ranking worksReport a problem
Legal
All policiesTermsPrivacyCookiesCreator PoolAffiliate disclosure
Your account
Account settingsSign in
Shin AI
Shin WebsiteKatsuiTrouble? Message Mario
Find your next favourite. Software, games and digital products on Guiru.Guiru Beta · Feedback© 2026 Shinai Tecnologias I.S.
Beta
StoreLibraryBuildersMember
Sign in
StoreSearchLibraryMemberSign in