Authentication
The storefront API uses JWT tokens(access token) to authenticate requests. You can get the access token using either your API key or using a session token.
Your API keys carry many privileges, so be sure to keep them secure. Don't share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.
A customer will always land on the portal using a session token. They can receive this token via multiple flows like email notifications, generating a magic link, reactivation campaigns etc.
The following diagram shows how we can utilise the session token to get access to the portal.

Storefront authentication flow
Tokens
- Session token - Entry token, expiry - 1 day
- Access token - Auth token for every storefront API, expiry - 4 days
- Refresh token - Used to rotate
access token, expiry - 30 days
A session token is used to get a refresh token and access token in a single API call. This is to save one API call per new login. Afterwards, the refresh token can be used to rotate the access token which will generate a fresh access token.
The access token can be used as a bearer token in the headers for authentication
Login with Shopify customer account
Endpoint:
POST /a/loop_subscriptions/storefront/auth/accessToken
Description:
This endpoint validates the Shopify customer session and returns a Loop access token if the customer is authenticated.
Behavior:
-
Returns
401 Unauthorizedif:- The customer is not logged into their Shopify account.
- The customer does not exist in the Loop.
-
On success, returns an
accessTokenin the response payload.
Response Example (200 OK):
{
"success": true,
"message": "Access token generated successfully",
"data": {
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyVHlwZSI6IkNVU1RPTUVSIiwidXNlcklkIjo2Mjg2NzE5NywidXNlclNob3BpZnlJZCI6NzMwMjg0MzMzNDgyOSwic3RvcmVJZCI6ODE2MiwibXlzaG9waWZ5RG9tYWluIjoiYmVjYXVzZW1hcmtldC1wcmdhasdkjn2jdkhqdsajhjkd1klxhdndkndasXh0IjpudWxsLCJpYXQiOjE3NDg5NTE3OTgsImV4cCI6MTc0OTI5NzM5OH0.cWxEG00rYhhU3jEA3Xrh9DEUQiXYzRQ07ThwypVd7ZM"
}
}Response Example (401 Unauthorized):
{
"success":false,
"message":"Unauthorized",
"data":{}
}Usage:
Use the returned accessToken to authenticate requests to the Loop Storefront API.
Note: This endpoint only works on the Shopify storefront.
