Anessa was previously called Insurely. You may still see the Insurely name in parts of our documentation while we complete the transition.

Migration guide

Collections are now a top-level resource (from 2025-01-01)

In 2025-01-01 an insurance collection lived under the product namespace: it was created at POST /insurance/collection and read under /insurance/collection/{collectionId}/... (wealth collections lived under /wealth/collection/...). In 2026-04-01 collections become a single shared, top-level resource. A collection is created at POST /collections regardless of product, and the insurance data is read from a product sub-path — GET /collections/{collectionId}/insurance/data, mirroring the Wealth API's /collections/{collectionId}/wealth/data.

Endpoint mapping

2025-01-01 (insurance)2026-04-01
POST /insurance/collectionPOST /collections (shared across products)
GET /insurance/collection/{collectionId}/statusGET /collections/{collectionId}/status
GET /insurance/collection/{collectionId}/dataGET /collections/{collectionId}/insurance/data
POST /insurance/collection/{collectionId}/supplement-infoPOST /collections/{collectionId}/supplement-info
POST /insurance/collection/{collectionId}/skipPOST /collections/{collectionId}/skip
DELETE /insurance/collection/{collectionId}DELETE /collections/{collectionId}
GET /insurance/collection/{collectionId}/policy/{policyId}/document/{documentId}GET /collections/{collectionId}/insurance/policy/{policyId}/document/{documentId}
—GET /collections — new: list the collections for the session token's user

GET /companies/availability is unchanged.

Typed request parameters

POST /collections replaces the untyped 2025-01-01 request body — a loginMethod plus an input map keyed by uppercase strings, with separate top-level consents and filter fields — with a single typed parameters array on InitiateCollectionRequest. Each entry carries a type discriminator and its own named, lower-camelCase fields.

  • Credentials become typed parameters — UsernamePasswordParameter (type: USERNAME_PASSWORD) and EmailPasswordParameter (type: EMAIL_PASSWORD) — instead of USERNAME / PASSWORD keys in input.
  • Regions for companies that list a region under additionalLoginInputs on GET /companies/availability move from the REGION input key into a RegionParameter (type: REGION), sent alongside the credential parameter.
  • Consents are explicit, typed parameters. The 2025-01-01 consents array only ever accepted one value, TRADE_UNION_MEMBERSHIP; supply it as a TradeUnionConsentParameter (type: TRADE_UNION_CONSENT) with an explicit value boolean and an optional collectedAt timestamp. value: true is equivalent to the old array entry; value: false and an omitted parameter both mean no consent.
  • Session identifiers move from inline input keys into a SessionMetadataParameter (type: SESSION_METADATA), under its attributes map with the keys sessionId, advisorHandle and externalReference.
  • The filter field (registrationNo rules) is no longer part of the request body.
// 2025-01-01
{
  "company": "fr-banque-populaire",
  "loginMethod": "USERNAME_AND_PASSWORD",
  "input": {
    "USERNAME": "user@example.com",
    "PASSWORD": "53cr3t_P455W0Rd***",
    "REGION": "ALSACE LORRAINE CHAMPAGNE"
  }
}

// 2026-04-01
{
  "company": "fr-banque-populaire",
  "loginMethod": "USERNAME_AND_PASSWORD",
  "parameters": [
    {
      "type": "USERNAME_PASSWORD",
      "username": "user@example.com",
      "password": "53cr3t_P455W0Rd***"
    },
    { "type": "REGION", "region": "ALSACE LORRAINE CHAMPAGNE" }
  ]
}

Login methods (France)

loginMethod stays a top-level field and the French values are unchanged from 2025-01-01; read the methods a company accepts from loginMethods on GET /companies/availability. Only the shape of the payload changes — each method now carries its input in a typed parameter rather than in the input map:

Login method2025-01-01 input2026-04-01 parameter
USERNAME_AND_PASSWORD{ "USERNAME": "…", "PASSWORD": "…" }{ "type": "USERNAME_PASSWORD", "username": "…", "password": "…" }
USERNAME_AND_PASSWORD with a region{ "USERNAME": "…", "PASSWORD": "…", "REGION": "…" }the USERNAME_PASSWORD parameter above plus { "type": "REGION", "region": "…" }
AUTHENTICATION_APP_URL—no credential parameter; the user authenticates through the URL returned in extraInformation
PDF_UPLOAD—unchanged — PDF uploads are not started through POST /collections in this version

Steps

  1. Repoint the base path. Replace /insurance/collection with /collections, and read data from /collections/{collectionId}/insurance/data instead of /insurance/collection/{collectionId}/data. Status, supplement-info, skip and deletion keep the same suffixes under the new prefix.
  2. Convert the request body. Move each input key into a typed entry in the parameters array (e.g. USERNAME / PASSWORD → { "type": "USERNAME_PASSWORD", "username": …, "password": … }, REGION → { "type": "REGION", "region": … }).
  3. Move consents and session data into parameters. Replace the consents array with a TRADE_UNION_CONSENT parameter carrying an explicit value, and move SESSION_ID / ADVISOR_HANDLE / EXTERNAL_REFERENCE into a SESSION_METADATA parameter's attributes as sessionId / advisorHandle / externalReference.
  4. Handle the new statuses (AUTHENTICATION_ERROR, LOGIN_METHOD_NOT_APPLICABLE, and DEGRADED_PERFORMANCE on company availability) so an unexpected value does not fall through as a failure.