Partner Life Single Sign-On
Partner Life is the comprehensive portal for partners to manage contracts, support requests, customer information, and policy changes. This guide explains how to integrate your existing authentication system with Partner Life using the Platform GraphQL API.
Prerequisites
Before you begin, ensure you have:
- Your API Key
- Your Partner ID (the insurance system broker ID, e.g.,
123000,23330-2) - The Partner IDs of your sub-brokers and employee accounts (found in their welcome emails or in the colleague section of your Partner Life account)
Integration Steps
1. Basic Setup
First, set up access to the Platform GraphQL API as described in the Platform GraphQL API Guide.
2. Generate Magic Links
Use the createPartnerLifeMagicLink mutation to generate direct access links to Partner Life:
mutation CreatePartnerLifeMagicLink($input: CreatePartnerLifeMagicLinkInput!) {
createPartnerLifeMagicLink(input: $input) {
... on PartnerLifeMagicLink {
url
}
... on ErrorInterface {
message
}
}
}
Example input — logging in the partner identified by the x-partner-id header:
{
"input": {
"alreadyMultiFactorAuthenticated": true,
"acceptPartnerLifeTermsAndConditions": true,
"acknowledgePartnerLifePrivacyPolicy": true
}
}
Example input — logging in a sub-partner or colleague account:
{
"input": {
"partnerLifewareId": "123456",
"alreadyMultiFactorAuthenticated": true,
"acceptPartnerLifeTermsAndConditions": true,
"acknowledgePartnerLifePrivacyPolicy": true
}
}
If partnerLifewareId is omitted, the magic link is created for the partner identified by the x-partner-id request header. To create magic links for sub-partners or colleague accounts, provide their Partner ID in the partnerLifewareId field. The target partner must be within your broker tree.
3. Authentication Flow
The basic authentication flow works as follows:
4. Multi-Factor Authentication
If your system already implements MFA, you can skip Partner Life's MFA check by setting alreadyMultiFactorAuthenticated to true:
Only set alreadyMultiFactorAuthenticated to true if your system has already verified the user with multiple authentication factors. Misusing this flag bypasses an important security check.
Auto-Activation of Accounts
For partners with a Partner ID but no active Partner Life account, you can automatically activate their account by setting both acceptPartnerLifeTermsAndConditions and acknowledgePartnerLifePrivacyPolicy to true.
Before activating, ensure the partner has accepted:
If these parameters are not set and the account is not yet activated, the API will return a PartnerHasNoPartnerLifeAccountError.
Deep Linking
A magic link accepts a redirect parameter — a URL-encoded Partner Life path. The advisor is logged in and lands there instead of on the dashboard.
https://partner.life.li/en/magic-link/<Magic Link Token>?redirect=<URL-encoded path>
Destinations
| Path to encode | Where the advisor lands | Creates an offer |
|---|---|---|
/my/customers/<Customer ID> | The customer's record — contact details, contracts, support history | No |
/my/offers/new?customerId=<Customer ID> | The product catalogue, scoped to that customer. Picking a product opens the offer with them already selected | No |
/my/offers/<Contract ID> | An offer you created through the API | No |
/my/products/offer/new?product=<Product Code> | The new-offer screen for one product | Yes, on arrival |
/my/products/offer/new?product=<Product Code>&customerId=<Customer ID> | The same, with the customer already selected | Yes, on arrival |
The last two write the offer as the page loads. Right when the product is already settled; for an exploratory jump they leave an offer behind for every conversation that went nowhere.
<Customer ID> is the ID createCustomer returns, or the one customer resolves from an email address. <Contract ID> comes from createOffer. If an ID is unknown, or the broker account is not licensed to reach that customer, the advisor is told so — your software receives no signal either way.
Example, fully encoded:
https://partner.life.li/en/magic-link/<Magic Link Token>?redirect=%2Fmy%2Foffers%2Fnew%3FcustomerId%3D<Customer ID>
The target carries its own query string, so ? and & inside it must be %3F and %26. An unencoded & ends the redirect value and everything after it is dropped: the advisor still arrives, without the customer, and nothing reports it.
Product Codes
Only the two product-scoped paths need one.
| Product | PlatformInsuranceProduct | Product Code |
|---|---|---|
| Liechtenstein Life Invest | LIECHTENSTEIN_LIFE_INVEST | liechtenstein-life-invest |
| Liechtenstein Life Pension | LIECHTENSTEIN_LIFE_PENSION | liechtenstein-life-pension |
| Liechtenstein Life Wealth | LIECHTENSTEIN_LIFE_WEALTH | liechtenstein-life-wealth |
| Prosperity 3a | PROSPERITY_3A | prosperity-3a |
| Prosperity Plus | PROSPERITY_PLUS | prosperity-plus |
| Prosperity Plus DE | PROSPERITY_PLUS_GERMANY | prosperity-plus-de |
| value invest VWL | VALUE_INVEST_VWL | value-invest-vwl |
| yourlife netto | YOUR_LIFE_NETTO_PLUS | yourlife-netto |
A code names no tariff, so it survives a product moving to a new tariff generation. The advisor gets the newest generation their account is licensed for; where a cross-border or gross variant exists, the standard tariff is chosen.
Error Handling
The mutation returns a union type. Always handle the error cases:
| Error Type | Meaning | Resolution |
|---|---|---|
PartnerHasNoPartnerLifeAccountError | Account not yet activated | Set both T&C and privacy policy flags to true |
PartnerNotFoundError | Partner ID not found or not in your broker tree | Verify the Partner ID is correct and within your access scope |
PartnerHasNoEmailError | Partner has no email configured | Contact support to set up the partner's email address |
UnexpectedError | Unexpected internal failure | Log the error, optionally retry the request, and contact support if the problem persists |
Security Best Practices
- Protect magic link URLs — they are single-use authentication tokens. Do not log or cache them.
- Use server-side calls only — never call the API from client-side code; your API key would be exposed.
- Validate MFA claims — only set
alreadyMultiFactorAuthenticatedtotruewhen your system has genuinely verified the user with multiple factors. - Minimal scope — only request magic links for partners within your broker tree. The API enforces this, but your integration should validate upfront.
Need Help?
If you don't have access to Partner Life or need assistance, contact partner support.