SMS One-Time Password (OTP) set up request.

POST /api/v1/me/sms/setup

This endpoint is used to set up SMS OTP based two-factor authentication.

Upon receiving a valid mobile phone number (two_factor_mobile) it will send a verification code via SMS to the supplied mobile phone number and return a status code of 422 Unprocessable Entity.

You will then need to verify receipt of the code by submitting the code (two_factor_sms_token) AND the mobile phone number (two_factor_mobile) in a subsequent request to the endpoint.

If the submitted two_factor_sms_token is invalid we will return a status code of 422 Unprocessable Entity.

Upon receipt of a valid mobile phone number AND a verified code the endpoint will return a status code of 200 OK.

Headers

application/json

Body Required

  • two_factor_mobile string Required

    The mobile number that 2FA tokens should be sent to.
    Format defaults to GB (+447539995949).
    You can provide an array ["country" => "AU", "number" => "+61 2 3456 7890"] if you want to use a different format.

  • The 6-digit token/code that was present in the SMS sent to the mobile number.
    Required after a valid mobile number has been provided.

Responses

  • 422 application/json

    Initial request unsuccessful

    Hide response attributes Show response attributes object
  • 422 (1) application/json

    Initial request successful subsequent request required

    Hide response attributes Show response attributes object
  • 422 (2) application/json

    Subsequent request unsuccessful

    Hide response attributes Show response attributes object
  • 200 text/plain

    SMS setup successful

POST /api/v1/me/sms/setup
curl \
 --request POST 'https://api.plannrcrm.com/api/v1/me/sms/setup' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"two_factor_mobile":"07539995949","two_factor_sms_token":"123789"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "two_factor_mobile": "07539995949",
  "two_factor_sms_token": "123789"
}
Response examples (422)
{
  "errors": {
    "two_factor_mobile": [
      "Please enter a valid mobile phone number. If there is no country specified, we will assume the phone number is a GB number."
    ]
  },
  "message": "Please enter a valid mobile phone number. If there is no country specified, we will assume the phone number is a GB number."
}
Response examples (422 (1))
{
  "errors": {
    "two_factor_sms_token": "Please enter the authentication code that we've sent to your mobile phone."
  },
  "message": "Please enter the authentication code that we've sent to your mobile phone."
}
Response examples (422 (2))
{
  "errors": {
    "two_factor_sms_token": "The authentication code is incorrect."
  },
  "message": "The authentication code is incorrect."
}
Response examples (200)
{"status":"SMS OTP setup complete using mobile phone number +447539995949."}}






















Query parameters

  • sort string

    Field to sort by. Valid fields are [created_at, updated_at, first_name, last_name, email, next_review_date, previous_review_date, anniversary_review_date]. Negative sign to denote DESC. Defaults to 'first_name'.

  • include string

    Comma separated list of relationships to include in the response. Valid relationships are [primary_phone_number, primary_email, primary_address, assigned_adviser, assigned_administrator, assigned_paraplanner, groups, tags, owners, custom_fields, external_references, charge_split_schema].

  • Filter accounts by name. This is a partial match against first_name, last_name, and entity_name together.

  • Comma separated list of partial National Insurance Numbers to filter by.

  • Filter by date of birth with an operator.

  • (Deprecated! Please use primary_email) Filter accounts that have an email with a partial match.

  • Filter accounts with a given primary email. Performs a partial match.

  • Filter accounts with a given primary phone number. Performs a partial match.

  • Filter client status by partial names or uuid's

  • Get accounts with this is_prospect value

  • Get accounts set to inactive after this date

  • Get accounts set to inactive before this date

  • Comma separated string to filter by different account roles. Valid types are [individual, joint, trust, business,member,owner,admin,introducer].

  • Comma separated string to filter by different account types. Valid types are [client,employee,external].

  • Date to filter when the accounts was created after. Example 2022-04-05

  • Date to filter when the accounts was created before. Example 2022-05-31

  • Filter by a accounts custom field. Example filter[custom_field:pet_name]='Doug'

  • Comma separated list of tag names or tag UUIDs.

  • Comma separated list of partial groups names or group UUIDs.

  • Comma separated list of departments the employee is in.

  • Provide a group UUID (or multiple as a comma-separated string) to filter accounts within the provided groups out from the response.

  • filter clients that have been introduced by this introducer account, expects introducer account uuid, can accept multiple,

  • Filter to clients that have been linked to the account given. This will also return the requested account.

  • Comma separated list of employee account UUIDs that should always be returned no matter what other filters are applied.

  • Filter accounts that have an active login

  • Comma separated list of UUIDS to filter accounts who have the provided adviser account UUIDs

  • Comma separated list of UUIDS to filter accounts who have the provided administrator account UUIDs

  • Comma separated list of UUIDS to filter accounts who have the provided paraplanner account UUIDs

  • per_page integer

    Number of results to return with pagination (Default 15. Max 500).

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
GET /api/v1/account
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/account' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "data": [
    {
      "firm": {
        "tax": 17.5,
        "logo": "https://api.plannrcrm.com/images/plannr.jpg",
        "name": "Codepotato",
        "slug": "codepotato",
        "uuid": "d1124fea-1efd-43fb-bb3d-fcea77afcbf8",
        "county": "Hampshire",
        "billing": {
          "invoice_email": "gareth@codepotato.co.uk",
          "invoice_county": "Hampshire",
          "invoice_country": "United Kingdom",
          "invoice_postcode": "PO7 7YH",
          "invoice_address_1": "Suite E, 5 The Briars",
          "invoice_address_2": "Waterberry Drive",
          "invoice_town_city": "Waterlooville"
        },
        "country": "United Kingdom",
        "postcode": "PO7 7YH",
        "address_1": "Suite E, 5 The Briars",
        "address_2": "Waterberry Drive",
        "logo_icon": "https://api.plannrcrm.com/images/plannr-icon.jpg",
        "month_end": 25,
        "town_city": "Waterlooville",
        "created_at": "2025-06-20T18:21:22+01:00",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "ip_whitelist": [
          "192.168.0.1",
          "127.0.0.1"
        ],
        "brand_colours": {
          "sidebar_text": "#ffffff",
          "sidebar_hover": "#0A0A42",
          "email_sub_text": "#ffffff",
          "sidebar_accent": "#36367E",
          "sidebar_active": "#53DBB8",
          "email_background": "#0E0E56",
          "email_button_text": "#ffffff",
          "portal_background": "#f6f6f6",
          "portal_brand_title": "#323b4b",
          "sidebar_background": "#0E0E56",
          "portal_sidebar_icon": "#828994",
          "portal_sidebar_text": "#323b4b",
          "portal_account_email": "#828994",
          "portal_sidebar_title": "#11151d",
          "sidebar_title_primary": "#FFC634",
          "portal_brand_sub_title": "#828994",
          "portal_sidebar_divider": "#e3e5e9",
          "email_button_background": "#36367E",
          "portal_dashboard_bg_one": "#EF4583",
          "portal_dashboard_bg_two": "#FFC634",
          "sidebar_title_secondary": "#ffffff",
          "sidebar_title_background": "#36367E",
          "portal_sidebar_icon_hover": "#828994",
          "portal_sidebar_text_hover": "#323b4b",
          "portal_sidebar_icon_active": "#828994",
          "portal_sidebar_text_active": "#323b4b",
          "email_logo_background_panel": "#36367E",
          "portal_sidebar_button_hover": "#ffffff",
          "portal_sidebar_account_title": "#11151d",
          "portal_sidebar_button_active": "#ffffff",
          "sidebar_title_secondary_hover": "#ffffff",
          "portal_sidebar_button_background": "#f6f6f6"
        },
        "is_subscribed": true,
        "regulatory_text": "Regulatory text",
        "addon_subscriptions": "App\\Http\\Resources\\Addons\\AddonSubscriptionResource",
        "statement_frequency": "monthly",
        "task_board_template": "App\\Http\\Resources\\Board\\BoardResource",
        "keep_deleted_files_for": 30,
        "welcome_paragraph_html": "<h1>Welcome.</h1>",
        "email_welcome_paragraph_html": "Welcome to Plannr!",
        "show_fact_find_illustrations": true
      },
      "name": "Gareth Thompson",
      "role": "client",
      "tags": [
        {
          "name": "Mortgage",
          "slug": "mortgage",
          "uuid": "158b646d-d114-4105-9f7c-10a4771fa164",
          "colour": "#ef4582",
          "created_at": "2025-06-20T18:21:22+01:00",
          "updated_at": "2025-06-20T18:21:22+01:00"
        }
      ],
      "type": "client",
      "uuid": "c4139619-db83-416f-a91e-f4409f04024b",
      "email": "gareth@codepotato.co.uk",
      "groups": [
        {
          "name": "finance",
          "slug": "finance",
          "uuid": "6f646f38-feef-4ac3-abdd-f747ad531349",
          "created_at": "2025-06-20T18:21:22+01:00",
          "updated_at": "2025-06-20T18:21:22+01:00",
          "participants": {
            "name": {
              "example": "Gareth Thompson",
              "description": "Name of the account"
            },
            "role": {
              "example": "client",
              "description": "Role of the account"
            },
            "uuid": {
              "example": "158b43b7-d6e9-41bf-8404-6db5b04c0dac",
              "description": "UUID of the account"
            },
            "email": {
              "example": "gareth@codepotato.co.uk",
              "description": "Email of the account"
            },
            "last_name": {
              "example": "Thompson",
              "description": "Last name of the account"
            },
            "first_name": {
              "example": "Gareth",
              "description": "First name of the account"
            }
          },
          "participants_count": "3"
        }
      ],
      "owners": [
        {
          "firm": "App\\Http\\Resources\\FirmResource",
          "name": "Gareth Thompson",
          "role": "client",
          "tags": "App\\Http\\Resources\\TagResource",
          "type": "client",
          "uuid": "d8776c3d-c989-43b6-af08-c6b3b61aa7a4",
          "email": "gareth@codepotato.co.uk",
          "groups": "App\\Http\\Resources\\GroupResource",
          "owners": "App\\Http\\Resources\\AccountResource",
          "last_name": "Thompson",
          "created_at": "2025-06-20T18:21:22+01:00",
          "first_name": "Gareth",
          "updated_at": "2025-06-20T18:21:22+01:00",
          "with_login": true,
          "inactive_at": "2025-06-20",
          "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
          "introduced_by": "App\\Http\\Resources\\AccountResource",
          "primary_email": "App\\Http\\Resources\\ContactDetailResource",
          "can_be_deleted": "false",
          "assigned_adviser": "App\\Http\\Resources\\AccountResource",
          "next_review_date": "2025-06-20T18:21:22+01:00",
          "has_joint_account": true,
          "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
          "first_contact_date": "2025-06-20T18:21:22+01:00",
          "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
          "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
          "joint_account_circle": "App\\Http\\Resources\\CircleResource",
          "ownership_percentage": 100,
          "previous_review_date": "2025-06-20T18:21:22+01:00",
          "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
          "assigned_administrator": "App\\Http\\Resources\\AccountResource",
          "anniversary_review_date": "2025-06-20T18:21:22+01:00"
        }
      ],
      "last_name": "Thompson",
      "created_at": "2025-06-20T18:21:22+01:00",
      "first_name": "Gareth",
      "updated_at": "2025-06-20T18:21:22+01:00",
      "with_login": true,
      "inactive_at": "2025-06-20",
      "custom_fields": [
        {
          "name": "Favourite Drink",
          "type": "string",
          "uuid": "792909a4-b9f4-47e8-a91e-242b5fb57add",
          "value": "Coffee",
          "help_text": "This is the client's favourite drink.",
          "reference": "favourite_drink",
          "created_at": "2025-06-20T18:21:22+01:00",
          "updated_at": "2025-06-20T18:21:22+01:00",
          "is_required": false,
          "selection_options": [
            "Coffee",
            "Tea",
            "Water"
          ]
        }
      ],
      "introduced_by": {
        "firm": "App\\Http\\Resources\\FirmResource",
        "name": "Gareth Thompson",
        "role": "client",
        "tags": "App\\Http\\Resources\\TagResource",
        "type": "client",
        "uuid": "513a32dd-5aa1-49d8-8770-14f90529d59b",
        "email": "gareth@codepotato.co.uk",
        "groups": "App\\Http\\Resources\\GroupResource",
        "owners": "App\\Http\\Resources\\AccountResource",
        "last_name": "Thompson",
        "created_at": "2025-06-20T18:21:22+01:00",
        "first_name": "Gareth",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "with_login": true,
        "inactive_at": "2025-06-20",
        "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
        "introduced_by": "App\\Http\\Resources\\AccountResource",
        "primary_email": "App\\Http\\Resources\\ContactDetailResource",
        "can_be_deleted": "false",
        "assigned_adviser": "App\\Http\\Resources\\AccountResource",
        "next_review_date": "2025-06-20T18:21:22+01:00",
        "has_joint_account": true,
        "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
        "first_contact_date": "2025-06-20T18:21:22+01:00",
        "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
        "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
        "joint_account_circle": "App\\Http\\Resources\\CircleResource",
        "ownership_percentage": 100,
        "previous_review_date": "2025-06-20T18:21:22+01:00",
        "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
        "assigned_administrator": "App\\Http\\Resources\\AccountResource",
        "anniversary_review_date": "2025-06-20T18:21:22+01:00"
      },
      "primary_email": {
        "name": "Work number",
        "type": "phone_number",
        "uuid": "888da2e0-b605-4e25-8dc9-8bb2f1d0d30e",
        "value": "+443330903630",
        "accounts": "App\\Http\\Resources\\AccountResource",
        "created_at": "2025-06-20T18:21:22+01:00",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "phone_number_meta": {
          "country": "GB",
          "formatted": "0333 090 3630"
        }
      },
      "can_be_deleted": "false",
      "assigned_adviser": {
        "firm": "App\\Http\\Resources\\FirmResource",
        "name": "Gareth Thompson",
        "role": "client",
        "tags": "App\\Http\\Resources\\TagResource",
        "type": "client",
        "uuid": "b4490fb3-fd66-4c98-b284-886a56e79e27",
        "email": "gareth@codepotato.co.uk",
        "groups": "App\\Http\\Resources\\GroupResource",
        "owners": "App\\Http\\Resources\\AccountResource",
        "last_name": "Thompson",
        "created_at": "2025-06-20T18:21:22+01:00",
        "first_name": "Gareth",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "with_login": true,
        "inactive_at": "2025-06-20",
        "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
        "introduced_by": "App\\Http\\Resources\\AccountResource",
        "primary_email": "App\\Http\\Resources\\ContactDetailResource",
        "can_be_deleted": "false",
        "assigned_adviser": "App\\Http\\Resources\\AccountResource",
        "next_review_date": "2025-06-20T18:21:22+01:00",
        "has_joint_account": true,
        "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
        "first_contact_date": "2025-06-20T18:21:22+01:00",
        "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
        "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
        "joint_account_circle": "App\\Http\\Resources\\CircleResource",
        "ownership_percentage": 100,
        "previous_review_date": "2025-06-20T18:21:22+01:00",
        "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
        "assigned_administrator": "App\\Http\\Resources\\AccountResource",
        "anniversary_review_date": "2025-06-20T18:21:22+01:00"
      },
      "next_review_date": "2025-06-20T18:21:22+01:00",
      "has_joint_account": true,
      "current_time_entry": {
        "name": "Research",
        "uuid": "4570da4a-42ee-4d33-98e1-2c6d02ca6916",
        "account": "App\\Http\\Resources\\MinimalAccountResource",
        "end_date": "2025-06-20T17:59:22+01:00",
        "is_active": true,
        "trackable": "App\\Http\\Resources\\MinimalAccountResource",
        "created_at": "2025-06-20T18:21:22+01:00",
        "start_date": "2025-06-20T17:31:22+01:00",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "description": "This is a description.",
        "trackable_type": "Client",
        "total_time_in_minutes": 28,
        "computed_time_elapsed_in_seconds": 1680
      },
      "first_contact_date": "2025-06-20T18:21:22+01:00",
      "external_references": [
        {
          "uuid": "754f2a99-724b-4614-992b-7f03946f8776",
          "reference": "AB123456",
          "created_at": "2025-06-20T18:21:22+01:00",
          "updated_at": "2025-06-20T18:21:22+01:00",
          "third_party": "nucleus"
        }
      ],
      "assigned_paraplanner": {
        "firm": "App\\Http\\Resources\\FirmResource",
        "name": "Gareth Thompson",
        "role": "client",
        "tags": "App\\Http\\Resources\\TagResource",
        "type": "client",
        "uuid": "81e39c42-1a4e-438c-92ac-8cffd6f5a495",
        "email": "gareth@codepotato.co.uk",
        "groups": "App\\Http\\Resources\\GroupResource",
        "owners": "App\\Http\\Resources\\AccountResource",
        "last_name": "Thompson",
        "created_at": "2025-06-20T18:21:22+01:00",
        "first_name": "Gareth",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "with_login": true,
        "inactive_at": "2025-06-20",
        "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
        "introduced_by": "App\\Http\\Resources\\AccountResource",
        "primary_email": "App\\Http\\Resources\\ContactDetailResource",
        "can_be_deleted": "false",
        "assigned_adviser": "App\\Http\\Resources\\AccountResource",
        "next_review_date": "2025-06-20T18:21:22+01:00",
        "has_joint_account": true,
        "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
        "first_contact_date": "2025-06-20T18:21:22+01:00",
        "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
        "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
        "joint_account_circle": "App\\Http\\Resources\\CircleResource",
        "ownership_percentage": 100,
        "previous_review_date": "2025-06-20T18:21:22+01:00",
        "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
        "assigned_administrator": "App\\Http\\Resources\\AccountResource",
        "anniversary_review_date": "2025-06-20T18:21:22+01:00"
      },
      "joint_account_circle": {
        "name": "Jones Family",
        "uuid": "4eb65528-b939-45be-8e6e-b418e717332f",
        "groups": "App\\Http\\Resources\\GroupResource",
        "accounts": "App\\Http\\Resources\\MinimalAccountResource",
        "created_at": "2025-06-20T18:21:22+01:00",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "joint_account_uuid": "ad31faf9-5240-4841-95f2-de541950c70e"
      },
      "ownership_percentage": 100,
      "previous_review_date": "2025-06-20T18:21:22+01:00",
      "primary_phone_number": {
        "name": "Work number",
        "type": "phone_number",
        "uuid": "cde44c78-4220-4731-8ea0-5de096b472f1",
        "value": "+443330903630",
        "accounts": "App\\Http\\Resources\\AccountResource",
        "created_at": "2025-06-20T18:21:22+01:00",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "phone_number_meta": {
          "country": "GB",
          "formatted": "0333 090 3630"
        }
      },
      "assigned_administrator": {
        "firm": "App\\Http\\Resources\\FirmResource",
        "name": "Gareth Thompson",
        "role": "client",
        "tags": "App\\Http\\Resources\\TagResource",
        "type": "client",
        "uuid": "9dd58043-28e2-4077-aa72-99d674a01fa1",
        "email": "gareth@codepotato.co.uk",
        "groups": "App\\Http\\Resources\\GroupResource",
        "owners": "App\\Http\\Resources\\AccountResource",
        "last_name": "Thompson",
        "created_at": "2025-06-20T18:21:22+01:00",
        "first_name": "Gareth",
        "updated_at": "2025-06-20T18:21:22+01:00",
        "with_login": true,
        "inactive_at": "2025-06-20",
        "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
        "introduced_by": "App\\Http\\Resources\\AccountResource",
        "primary_email": "App\\Http\\Resources\\ContactDetailResource",
        "can_be_deleted": "false",
        "assigned_adviser": "App\\Http\\Resources\\AccountResource",
        "next_review_date": "2025-06-20T18:21:22+01:00",
        "has_joint_account": true,
        "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
        "first_contact_date": "2025-06-20T18:21:22+01:00",
        "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
        "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
        "joint_account_circle": "App\\Http\\Resources\\CircleResource",
        "ownership_percentage": 100,
        "previous_review_date": "2025-06-20T18:21:22+01:00",
        "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
        "assigned_administrator": "App\\Http\\Resources\\AccountResource",
        "anniversary_review_date": "2025-06-20T18:21:22+01:00"
      },
      "anniversary_review_date": "2025-06-20T18:21:22+01:00"
    }
  ]
}








Path parameters

application/json

Body

Responses

PUT /api/v1/account/{uuid}
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/account/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"Client":[{"title":{"type":"string","example":"Mr","required":false,"description":"Title"},"value":{"type":"integer","example":500000,"required":false,"description":"The value of the client in penny format. E.g £5,000 would be 500000."},"gender":{"type":"string","example":"Male","required":false,"description":"Gender. Possible values are: male, female, non-binary, transgender, intersex, other and unknown"},"groups":{"type":"array","example":["2efaf289-602c-4372-89ea-a9f626a69593","2b0e6467-ebc6-4198-a35e-db85d2abc801"],"required":false,"description":"Group UUIDs to sync client to. Null can be provided to clear a clients groups."},"height":{"type":"integer","example":186,"required":false,"description":"The height of the client in centimeters."},"weight":{"type":"integer","example":220,"required":false,"description":"The weight of the client in pounds."},"has_will":{"type":"boolean","example":true,"required":false,"description":"Whether the client has a will or not."},"nickname":{"type":"string","example":"Garth","required":false,"description":"preferred nickname of the client"},"pronouns":{"type":"string","example":"he/him","required":false,"description":"Pronouns"},"last_name":{"type":"string","example":"Thompson","required":false,"description":"Last name"},"ni_number":{"type":"string","example":"AB 12 34 56 C","required":false,"description":"National Insurance Number"},"first_name":{"type":"string","example":"Gareth","required":false,"description":"First name"},"gift_notes":{"type":"string","example":"Notes on the gifts.","required":false,"description":"Notes on the gifts."},"will_notes":{"type":"string","example":"Notes on the client's will.","required":false,"description":"Notes on the client's will."},"deceased_at":{"type":"date","example":"2025-06-20","required":false,"description":"Date of death"},"entity_name":{"type":"string","example":"Plannr Ltd","required":false,"description":"Entity name for shared account types"},"inactive_at":{"type":"date","example":"2025-06-20","required":false,"description":"Inactive from date"},"is_deceased":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client is deceased"},"is_prospect":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client is a prospect or not."},"lead_source":{"type":"string","example":"LeadGen Company","required":false,"description":"Marks the lead source of the client"},"maiden_name":{"type":"string","example":"Thompson","required":false,"description":"Maiden name."},"middle_name":{"type":"string","example":"Alex","required":false,"description":"Middle name."},"status_uuid":{"type":"string","example":"188bb563-642a-4db1-8d77-a7f7f59dfac4","required":false,"description":"The status of the client."},"do_not_visit":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client can be visited"},"health_notes":{"type":"string","example":"Notes on the client's health.","required":false,"description":"Notes on the client's health."},"smoker_since":{"type":"date","example":"2015-06-20","required":false,"description":"The date of when the client started smoking."},"date_of_birth":{"type":"date","example":"1975-06-20","required":false,"description":"Date of birth"},"do_not_market":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client can be visited"},"is_vulnerable":{"type":"string","example":"possibly","required":false,"description":"whether the client is vulnerable.  Possible values are: \"yes\", \"no\", and \"possibly\""},"nationalities":{"type":"array","example":["British","Romanian"],"required":false,"description":"Nationalities of the client. You can use the api/v1/static/nationalities endpoint to get our list."},"pension_notes":{"type":"string","example":"","required":false,"description":"Notes on the pension"},"smoker_status":{"type":"string","example":"non-smoker","required":false,"description":"Smoker Status. Possible values are: smoker, non-smoker, vaper, ex-smoker, never-smoked, unknown"},"will_location":{"type":"string","example":"","required":false,"description":"Where is the will stored?"},"write_to_whom":{"type":"string","example":"Gareth","required":false,"description":"Marks the name of the client to write to"},"is_uk_domicile":{"type":"boolean","example":true,"required":false,"description":"Whether the client is a UK domicile or not."},"is_uk_resident":{"type":"boolean","example":true,"required":false,"description":"Whether the client is a UK resident or not."},"marital_status":{"type":"string","example":"married","required":false,"description":"Marital status. Possible values are: single, cohabiting, married, divorced, civil-partnership, dissolved-civil-partnership, widowed, separated, engaged, in-relationship, other, unknown"},"will_executors":{"type":"string","example":"","required":false,"description":"Who are the executors?"},"passport_number":{"type":"string","example":"123456","required":false,"description":"The passport number of the client"},"cigarettes_daily":{"type":"integer","example":6,"required":false,"description":"The amount of cigarettes the client smokes a day."},"date_of_forecast":{"type":"date","example":"2025-06-20T18:21:22+01:00","required":false,"description":"What is the date of the obtained forecast"},"date_of_marriage":{"type":"date","example":"2025-06-20","required":false,"description":"Date of marriage"},"has_iht_planning":{"type":"boolean","example":true,"required":false,"description":"Whether the client has Inheritance Tax (IHT) planning or not."},"is_will_accurate":{"type":"boolean","example":true,"required":false,"description":"Does your current will reflect your wishes?"},"next_review_date":{"type":"date","example":"2025-07-20","required":false,"description":"Date of next review"},"will_poa_details":{"type":"string","example":"","required":false,"description":"Who are the Attorney’s?"},"has_gifted_family":{"type":"boolean","example":true,"required":false,"description":"Whether the client has gifted the family."},"client_preferences":{"type":"string","example":"Prefers telephone calls in the morning.","required":false,"description":"Any client preferences."},"first_contact_date":{"type":"date","example":"2025-05-20","required":false,"description":"The date of the first contact."},"iht_planning_notes":{"type":"string","example":"Notes on the client's Inheritance Tax (IHT) planning.","required":false,"description":"Notes on the client's Inheritance Tax (IHT) planning."},"introduced_by_uuid":{"type":"string","example":"ad9206d7-2078-4a9a-b684-0628a47acaed","required":false,"description":"The UUID of the introducer for this client"},"primary_email_uuid":{"type":"string","example":"225982cc-1825-4e39-853d-0841c8296d90","required":false,"description":"uuid of the primary email contact detail"},"residential_status":{"type":"string","example":"settled","required":false,"description":"Residential status"},"will_gifts_details":{"type":"string","example":"","required":false,"description":"Notes of gifts"},"will_last_reviewed":{"type":"date","example":"2025-06-20","required":false,"description":"The date of the last time the will's been reviewed."},"third_party_offered":{"type":"boolean","example":true,"required":false,"description":"Whether the client has been offered any third party."},"checked_sanctions_at":{"type":"date","example":"2025-06-20","required":false,"description":"Date the client was checked for sanctions"},"country_of_residence":{"type":"string","example":"United Kingdom","required":false,"description":"Country of residence"},"long_term_care_notes":{"type":"string","example":"Notes on the client's long term care.","required":false,"description":"Notes on the client's long term care."},"previous_review_date":{"type":"date","example":"2025-05-20","required":false,"description":"Date of previous review"},"primary_address_uuid":{"type":"string","example":"828a666c-a092-48f1-99aa-0fda0d1a1eee","required":false,"description":"uuid of the primary address"},"procedure_adaptation":{"type":"boolean","example":false,"required":false,"description":"Whether any procedures need to be adapted to the client."},"state_retirement_age":{"type":"integer","example":60,"required":false,"description":"The state retirement age."},"will_bequests_detail":{"type":"string","example":"","required":false,"description":"Details of any Bequests"},"assigned_adviser_uuid":{"type":"string","example":"681bdede-82af-41eb-aef2-9642a6611dc6","required":false,"description":"The UUID of the employee that the client directly reports to"},"has_power_of_attorney":{"type":"boolean","example":true,"required":false,"description":"Whether the client has power of attorney."},"is_married_to_partner":{"type":"boolean","example":true,"required":false,"description":"Denotes if the client is married to their partner"},"long_term_care_needed":{"type":"boolean","example":false,"required":false,"description":"Whether the client required long term care."},"prospect_converted_at":{"type":"date","example":"2025-06-20T18:21:22+01:00","required":false,"description":"The datetime when the prospect was converted into a client."},"target_retirement_age":{"type":"integer","example":60,"required":false,"description":"Targest retirement age."},"vulnerability_details":{"type":"string","example":"No vulnerabilities","required":false,"description":"Any details regarding the client's vulnerabilities."},"adaption_details_notes":{"type":"boolean","example":"Adaptation notes","required":false,"description":"Any notes regarding adaptations"},"do_not_contact_via_fax":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client can be contacted via fax"},"do_not_contact_via_sms":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client can be contacted via SMS"},"anniversary_review_date":{"type":"date","example":"2025-06-20","required":false,"description":"Anniversary review date"},"current_life_stage_uuid":{"type":"string","example":"cea5526f-8e52-4e64-af10-91bc7cfd8474","required":false,"description":"The clients current life stage for expenditure."},"current_state_of_health":{"type":"string","example":"Fit and healthy","required":false,"description":"The client's current state of health."},"do_not_contact_via_mail":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client can be contacted via mail"},"expected_retirement_age":{"type":"integer","example":60,"required":false,"description":"The expected retirement age."},"has_obtained_a_forecast":{"type":"boolean","example":true,"required":false,"description":"Have you recently obtained a forecast"},"power_of_attorney_notes":{"type":"string","example":"Notes on the client's power of attorney.","required":false,"description":"Notes on the client's power of attorney."},"projected_state_pension":{"type":"integer","example":50000,"required":false,"description":"What is the projected State Pension"},"units_of_alcohol_weekly":{"type":"integer","example":28,"required":false,"description":"The units of alcohol digested weekly."},"do_not_contact_via_email":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client can be contacted via email"},"assigned_paraplanner_uuid":{"type":"string","example":"641ddcbb-c616-42a7-9708-b7333522e9dd","required":false,"description":"The UUID of the paraplanner employee that the client has been assigned"},"poa_attorney_appointed_at":{"type":"date","example":"2025-06-20T00:00:00+01:00","required":false,"description":"When were the Attorney’s appointed?"},"primary_phone_number_uuid":{"type":"string","example":"63c31f2e-ff52-4113-aba1-6669ce8a9694","required":false,"description":"uuid of the primary phone number contact detail"},"assigned_administrator_uuid":{"type":"string","example":"46cf0a24-3fdb-443d-b9c5-f5763a0c83a8","required":false,"description":"The UUID of the adviser employee that the client has been assigned"},"is_anticipating_inheritance":{"type":"boolean","example":true,"required":false,"description":"Whether the client is anticipating/ expecting any inheritance."},"state_of_health_explanation":{"type":"string","example":"Explanation of the current state of health.","required":false,"description":"Explanation of the current state of health."},"are_poa_documents_registered":{"type":"boolean","example":true,"required":false,"description":"Are the documents registered?"},"do_not_contact_via_telephone":{"type":"boolean","example":false,"required":false,"description":"Denotes if the client can be contacted via telephone"},"is_poa_registered_epa_or_lpa":{"type":"string","example":"epa","required":false,"description":"Is the Power of Attorney Registered as a EPA or LPA"},"anticipating_inheritance_notes":{"type":"string","example":"Notes on the client's inheritance anticipation/ expectations.","required":false,"description":"Notes on the client's inheritance anticipation/ expectations."},"last_used_nicotine_products_date":{"type":"date","example":"2024-06-20","required":false,"description":"The date of the last time the client used nicotine products."},"is_in_receipt_of_your_state_pension":{"type":"boolean","example":true,"required":false,"description":"Are you in receipt of your State Pension"},"are_poa_appointed_for_health_or_wealth":{"type":"string","example":"health","required":false,"description":"Are the Attorneys appointed for Health, Wealth or Both?"},"years_of_national_insurance_contributions":{"type":"integer","example":5,"required":false,"description":"How many years have you made Nation Insurance Contributions"}}],"Employee":[{"role":{"type":"string","example":"owner","required":false,"description":"The role of the employee."},"email":{"type":"string","example":"gareth.thompson@plannrcrm.com","required":false,"description":"The email of the employee. Required when with_login is present."},"groups":{"type":"array","example":["42217cd3-93f2-4bab-a767-4a138540cff0","2c1eded0-437a-4e9d-9bc1-fc04112ab509"],"required":false,"description":"Group UUIDs to sync employee to. Null can be provided to clear an employees groups"},"last_name":{"type":"string","example":"Thompson","required":false,"description":"The last name of the employee."},"first_name":{"type":"string","example":"Gareth","required":false,"description":"The first name of the employee."},"advice_type":{"type":"string","example":"independent","required":false,"description":"Employee's RMAR advice type"},"departments":{"type":"array","example":["paraplanner","adviser"],"required":false,"description":"The departments the employee is part of"},"inactive_at":{"type":"date","example":"2025-06-20","required":false,"description":"Inactive from date"},"adviser_split_uuid":{"type":"string","example":"54fe98f9-8f70-41bf-afde-cb859cb43a3d","required":false,"description":"Adviser split"},"meeting_booking_url":{"type":"string","example":"https://calendly.com/gareth-codepotato","required":false,"description":"Employee's meeting booking URL"},"assigned_adviser_uuid":{"type":"string","example":"1dd92514-6628-49ba-91a1-7385b62d2c45","required":false,"description":"The uuid of the senior employee that the employee directly reports to"}}],"Introducer":[{"title":{"type":"string","example":"Mr","required":false,"description":"Title"},"groups":{"type":"array","example":["d640b8ca-9581-4383-b7ed-3e1a5d3884f9","8c50e044-81cb-4873-ac9a-f17cf7a19304"],"required":false,"description":"Group UUIDs to sync introducer to. Null can be provided to clear an introducers groups"},"last_name":{"type":"string","example":"Stanton","required":false,"description":"Last name"},"first_name":{"type":"string","example":"Patrick","required":false,"description":"First name"},"entity_name":{"type":"string","example":"PatrickCo","required":false,"description":"Entity/business name"},"inactive_at":{"type":"date","example":"2025-06-20","required":false,"description":"Inactive from date"},"assigned_adviser_uuid":{"type":"string","example":"b0d172a9-aa2e-4341-8aca-2ee77e191d7d","required":false,"description":"UUID of the account that this account reports to"},"charge_split_schema_uuid":{"type":"string","example":"25a91d4c-859e-47f0-ae47-c515d9453623","required":false,"description":"Charge split schema that is always used when adding a charge split for this introducer"}}]}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "Client": [
    {
      "title": {
        "type": "string",
        "example": "Mr",
        "required": false,
        "description": "Title"
      },
      "value": {
        "type": "integer",
        "example": 500000,
        "required": false,
        "description": "The value of the client in penny format. E.g £5,000 would be 500000."
      },
      "gender": {
        "type": "string",
        "example": "Male",
        "required": false,
        "description": "Gender. Possible values are: male, female, non-binary, transgender, intersex, other and unknown"
      },
      "groups": {
        "type": "array",
        "example": [
          "2efaf289-602c-4372-89ea-a9f626a69593",
          "2b0e6467-ebc6-4198-a35e-db85d2abc801"
        ],
        "required": false,
        "description": "Group UUIDs to sync client to. Null can be provided to clear a clients groups."
      },
      "height": {
        "type": "integer",
        "example": 186,
        "required": false,
        "description": "The height of the client in centimeters."
      },
      "weight": {
        "type": "integer",
        "example": 220,
        "required": false,
        "description": "The weight of the client in pounds."
      },
      "has_will": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client has a will or not."
      },
      "nickname": {
        "type": "string",
        "example": "Garth",
        "required": false,
        "description": "preferred nickname of the client"
      },
      "pronouns": {
        "type": "string",
        "example": "he/him",
        "required": false,
        "description": "Pronouns"
      },
      "last_name": {
        "type": "string",
        "example": "Thompson",
        "required": false,
        "description": "Last name"
      },
      "ni_number": {
        "type": "string",
        "example": "AB 12 34 56 C",
        "required": false,
        "description": "National Insurance Number"
      },
      "first_name": {
        "type": "string",
        "example": "Gareth",
        "required": false,
        "description": "First name"
      },
      "gift_notes": {
        "type": "string",
        "example": "Notes on the gifts.",
        "required": false,
        "description": "Notes on the gifts."
      },
      "will_notes": {
        "type": "string",
        "example": "Notes on the client's will.",
        "required": false,
        "description": "Notes on the client's will."
      },
      "deceased_at": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "Date of death"
      },
      "entity_name": {
        "type": "string",
        "example": "Plannr Ltd",
        "required": false,
        "description": "Entity name for shared account types"
      },
      "inactive_at": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "Inactive from date"
      },
      "is_deceased": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client is deceased"
      },
      "is_prospect": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client is a prospect or not."
      },
      "lead_source": {
        "type": "string",
        "example": "LeadGen Company",
        "required": false,
        "description": "Marks the lead source of the client"
      },
      "maiden_name": {
        "type": "string",
        "example": "Thompson",
        "required": false,
        "description": "Maiden name."
      },
      "middle_name": {
        "type": "string",
        "example": "Alex",
        "required": false,
        "description": "Middle name."
      },
      "status_uuid": {
        "type": "string",
        "example": "188bb563-642a-4db1-8d77-a7f7f59dfac4",
        "required": false,
        "description": "The status of the client."
      },
      "do_not_visit": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client can be visited"
      },
      "health_notes": {
        "type": "string",
        "example": "Notes on the client's health.",
        "required": false,
        "description": "Notes on the client's health."
      },
      "smoker_since": {
        "type": "date",
        "example": "2015-06-20",
        "required": false,
        "description": "The date of when the client started smoking."
      },
      "date_of_birth": {
        "type": "date",
        "example": "1975-06-20",
        "required": false,
        "description": "Date of birth"
      },
      "do_not_market": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client can be visited"
      },
      "is_vulnerable": {
        "type": "string",
        "example": "possibly",
        "required": false,
        "description": "whether the client is vulnerable.  Possible values are: \"yes\", \"no\", and \"possibly\""
      },
      "nationalities": {
        "type": "array",
        "example": [
          "British",
          "Romanian"
        ],
        "required": false,
        "description": "Nationalities of the client. You can use the api/v1/static/nationalities endpoint to get our list."
      },
      "pension_notes": {
        "type": "string",
        "example": "",
        "required": false,
        "description": "Notes on the pension"
      },
      "smoker_status": {
        "type": "string",
        "example": "non-smoker",
        "required": false,
        "description": "Smoker Status. Possible values are: smoker, non-smoker, vaper, ex-smoker, never-smoked, unknown"
      },
      "will_location": {
        "type": "string",
        "example": "",
        "required": false,
        "description": "Where is the will stored?"
      },
      "write_to_whom": {
        "type": "string",
        "example": "Gareth",
        "required": false,
        "description": "Marks the name of the client to write to"
      },
      "is_uk_domicile": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client is a UK domicile or not."
      },
      "is_uk_resident": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client is a UK resident or not."
      },
      "marital_status": {
        "type": "string",
        "example": "married",
        "required": false,
        "description": "Marital status. Possible values are: single, cohabiting, married, divorced, civil-partnership, dissolved-civil-partnership, widowed, separated, engaged, in-relationship, other, unknown"
      },
      "will_executors": {
        "type": "string",
        "example": "",
        "required": false,
        "description": "Who are the executors?"
      },
      "passport_number": {
        "type": "string",
        "example": "123456",
        "required": false,
        "description": "The passport number of the client"
      },
      "cigarettes_daily": {
        "type": "integer",
        "example": 6,
        "required": false,
        "description": "The amount of cigarettes the client smokes a day."
      },
      "date_of_forecast": {
        "type": "date",
        "example": "2025-06-20T18:21:22+01:00",
        "required": false,
        "description": "What is the date of the obtained forecast"
      },
      "date_of_marriage": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "Date of marriage"
      },
      "has_iht_planning": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client has Inheritance Tax (IHT) planning or not."
      },
      "is_will_accurate": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Does your current will reflect your wishes?"
      },
      "next_review_date": {
        "type": "date",
        "example": "2025-07-20",
        "required": false,
        "description": "Date of next review"
      },
      "will_poa_details": {
        "type": "string",
        "example": "",
        "required": false,
        "description": "Who are the Attorney’s?"
      },
      "has_gifted_family": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client has gifted the family."
      },
      "client_preferences": {
        "type": "string",
        "example": "Prefers telephone calls in the morning.",
        "required": false,
        "description": "Any client preferences."
      },
      "first_contact_date": {
        "type": "date",
        "example": "2025-05-20",
        "required": false,
        "description": "The date of the first contact."
      },
      "iht_planning_notes": {
        "type": "string",
        "example": "Notes on the client's Inheritance Tax (IHT) planning.",
        "required": false,
        "description": "Notes on the client's Inheritance Tax (IHT) planning."
      },
      "introduced_by_uuid": {
        "type": "string",
        "example": "ad9206d7-2078-4a9a-b684-0628a47acaed",
        "required": false,
        "description": "The UUID of the introducer for this client"
      },
      "primary_email_uuid": {
        "type": "string",
        "example": "225982cc-1825-4e39-853d-0841c8296d90",
        "required": false,
        "description": "uuid of the primary email contact detail"
      },
      "residential_status": {
        "type": "string",
        "example": "settled",
        "required": false,
        "description": "Residential status"
      },
      "will_gifts_details": {
        "type": "string",
        "example": "",
        "required": false,
        "description": "Notes of gifts"
      },
      "will_last_reviewed": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "The date of the last time the will's been reviewed."
      },
      "third_party_offered": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client has been offered any third party."
      },
      "checked_sanctions_at": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "Date the client was checked for sanctions"
      },
      "country_of_residence": {
        "type": "string",
        "example": "United Kingdom",
        "required": false,
        "description": "Country of residence"
      },
      "long_term_care_notes": {
        "type": "string",
        "example": "Notes on the client's long term care.",
        "required": false,
        "description": "Notes on the client's long term care."
      },
      "previous_review_date": {
        "type": "date",
        "example": "2025-05-20",
        "required": false,
        "description": "Date of previous review"
      },
      "primary_address_uuid": {
        "type": "string",
        "example": "828a666c-a092-48f1-99aa-0fda0d1a1eee",
        "required": false,
        "description": "uuid of the primary address"
      },
      "procedure_adaptation": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Whether any procedures need to be adapted to the client."
      },
      "state_retirement_age": {
        "type": "integer",
        "example": 60,
        "required": false,
        "description": "The state retirement age."
      },
      "will_bequests_detail": {
        "type": "string",
        "example": "",
        "required": false,
        "description": "Details of any Bequests"
      },
      "assigned_adviser_uuid": {
        "type": "string",
        "example": "681bdede-82af-41eb-aef2-9642a6611dc6",
        "required": false,
        "description": "The UUID of the employee that the client directly reports to"
      },
      "has_power_of_attorney": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client has power of attorney."
      },
      "is_married_to_partner": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Denotes if the client is married to their partner"
      },
      "long_term_care_needed": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Whether the client required long term care."
      },
      "prospect_converted_at": {
        "type": "date",
        "example": "2025-06-20T18:21:22+01:00",
        "required": false,
        "description": "The datetime when the prospect was converted into a client."
      },
      "target_retirement_age": {
        "type": "integer",
        "example": 60,
        "required": false,
        "description": "Targest retirement age."
      },
      "vulnerability_details": {
        "type": "string",
        "example": "No vulnerabilities",
        "required": false,
        "description": "Any details regarding the client's vulnerabilities."
      },
      "adaption_details_notes": {
        "type": "boolean",
        "example": "Adaptation notes",
        "required": false,
        "description": "Any notes regarding adaptations"
      },
      "do_not_contact_via_fax": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client can be contacted via fax"
      },
      "do_not_contact_via_sms": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client can be contacted via SMS"
      },
      "anniversary_review_date": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "Anniversary review date"
      },
      "current_life_stage_uuid": {
        "type": "string",
        "example": "cea5526f-8e52-4e64-af10-91bc7cfd8474",
        "required": false,
        "description": "The clients current life stage for expenditure."
      },
      "current_state_of_health": {
        "type": "string",
        "example": "Fit and healthy",
        "required": false,
        "description": "The client's current state of health."
      },
      "do_not_contact_via_mail": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client can be contacted via mail"
      },
      "expected_retirement_age": {
        "type": "integer",
        "example": 60,
        "required": false,
        "description": "The expected retirement age."
      },
      "has_obtained_a_forecast": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Have you recently obtained a forecast"
      },
      "power_of_attorney_notes": {
        "type": "string",
        "example": "Notes on the client's power of attorney.",
        "required": false,
        "description": "Notes on the client's power of attorney."
      },
      "projected_state_pension": {
        "type": "integer",
        "example": 50000,
        "required": false,
        "description": "What is the projected State Pension"
      },
      "units_of_alcohol_weekly": {
        "type": "integer",
        "example": 28,
        "required": false,
        "description": "The units of alcohol digested weekly."
      },
      "do_not_contact_via_email": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client can be contacted via email"
      },
      "assigned_paraplanner_uuid": {
        "type": "string",
        "example": "641ddcbb-c616-42a7-9708-b7333522e9dd",
        "required": false,
        "description": "The UUID of the paraplanner employee that the client has been assigned"
      },
      "poa_attorney_appointed_at": {
        "type": "date",
        "example": "2025-06-20T00:00:00+01:00",
        "required": false,
        "description": "When were the Attorney’s appointed?"
      },
      "primary_phone_number_uuid": {
        "type": "string",
        "example": "63c31f2e-ff52-4113-aba1-6669ce8a9694",
        "required": false,
        "description": "uuid of the primary phone number contact detail"
      },
      "assigned_administrator_uuid": {
        "type": "string",
        "example": "46cf0a24-3fdb-443d-b9c5-f5763a0c83a8",
        "required": false,
        "description": "The UUID of the adviser employee that the client has been assigned"
      },
      "is_anticipating_inheritance": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Whether the client is anticipating/ expecting any inheritance."
      },
      "state_of_health_explanation": {
        "type": "string",
        "example": "Explanation of the current state of health.",
        "required": false,
        "description": "Explanation of the current state of health."
      },
      "are_poa_documents_registered": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Are the documents registered?"
      },
      "do_not_contact_via_telephone": {
        "type": "boolean",
        "example": false,
        "required": false,
        "description": "Denotes if the client can be contacted via telephone"
      },
      "is_poa_registered_epa_or_lpa": {
        "type": "string",
        "example": "epa",
        "required": false,
        "description": "Is the Power of Attorney Registered as a EPA or LPA"
      },
      "anticipating_inheritance_notes": {
        "type": "string",
        "example": "Notes on the client's inheritance anticipation/ expectations.",
        "required": false,
        "description": "Notes on the client's inheritance anticipation/ expectations."
      },
      "last_used_nicotine_products_date": {
        "type": "date",
        "example": "2024-06-20",
        "required": false,
        "description": "The date of the last time the client used nicotine products."
      },
      "is_in_receipt_of_your_state_pension": {
        "type": "boolean",
        "example": true,
        "required": false,
        "description": "Are you in receipt of your State Pension"
      },
      "are_poa_appointed_for_health_or_wealth": {
        "type": "string",
        "example": "health",
        "required": false,
        "description": "Are the Attorneys appointed for Health, Wealth or Both?"
      },
      "years_of_national_insurance_contributions": {
        "type": "integer",
        "example": 5,
        "required": false,
        "description": "How many years have you made Nation Insurance Contributions"
      }
    }
  ],
  "Employee": [
    {
      "role": {
        "type": "string",
        "example": "owner",
        "required": false,
        "description": "The role of the employee."
      },
      "email": {
        "type": "string",
        "example": "gareth.thompson@plannrcrm.com",
        "required": false,
        "description": "The email of the employee. Required when with_login is present."
      },
      "groups": {
        "type": "array",
        "example": [
          "42217cd3-93f2-4bab-a767-4a138540cff0",
          "2c1eded0-437a-4e9d-9bc1-fc04112ab509"
        ],
        "required": false,
        "description": "Group UUIDs to sync employee to. Null can be provided to clear an employees groups"
      },
      "last_name": {
        "type": "string",
        "example": "Thompson",
        "required": false,
        "description": "The last name of the employee."
      },
      "first_name": {
        "type": "string",
        "example": "Gareth",
        "required": false,
        "description": "The first name of the employee."
      },
      "advice_type": {
        "type": "string",
        "example": "independent",
        "required": false,
        "description": "Employee's RMAR advice type"
      },
      "departments": {
        "type": "array",
        "example": [
          "paraplanner",
          "adviser"
        ],
        "required": false,
        "description": "The departments the employee is part of"
      },
      "inactive_at": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "Inactive from date"
      },
      "adviser_split_uuid": {
        "type": "string",
        "example": "54fe98f9-8f70-41bf-afde-cb859cb43a3d",
        "required": false,
        "description": "Adviser split"
      },
      "meeting_booking_url": {
        "type": "string",
        "example": "https://calendly.com/gareth-codepotato",
        "required": false,
        "description": "Employee's meeting booking URL"
      },
      "assigned_adviser_uuid": {
        "type": "string",
        "example": "1dd92514-6628-49ba-91a1-7385b62d2c45",
        "required": false,
        "description": "The uuid of the senior employee that the employee directly reports to"
      }
    }
  ],
  "Introducer": [
    {
      "title": {
        "type": "string",
        "example": "Mr",
        "required": false,
        "description": "Title"
      },
      "groups": {
        "type": "array",
        "example": [
          "d640b8ca-9581-4383-b7ed-3e1a5d3884f9",
          "8c50e044-81cb-4873-ac9a-f17cf7a19304"
        ],
        "required": false,
        "description": "Group UUIDs to sync introducer to. Null can be provided to clear an introducers groups"
      },
      "last_name": {
        "type": "string",
        "example": "Stanton",
        "required": false,
        "description": "Last name"
      },
      "first_name": {
        "type": "string",
        "example": "Patrick",
        "required": false,
        "description": "First name"
      },
      "entity_name": {
        "type": "string",
        "example": "PatrickCo",
        "required": false,
        "description": "Entity/business name"
      },
      "inactive_at": {
        "type": "date",
        "example": "2025-06-20",
        "required": false,
        "description": "Inactive from date"
      },
      "assigned_adviser_uuid": {
        "type": "string",
        "example": "b0d172a9-aa2e-4341-8aca-2ee77e191d7d",
        "required": false,
        "description": "UUID of the account that this account reports to"
      },
      "charge_split_schema_uuid": {
        "type": "string",
        "example": "25a91d4c-859e-47f0-ae47-c515d9453623",
        "required": false,
        "description": "Charge split schema that is always used when adding a charge split for this introducer"
      }
    }
  ]
}
Response examples (200)
{
  "firm": {
    "tax": 17.5,
    "logo": "https://api.plannrcrm.com/images/plannr.jpg",
    "name": "Codepotato",
    "slug": "codepotato",
    "uuid": "d79105b4-4ba0-40a6-9cb1-7f77230d76cc",
    "county": "Hampshire",
    "billing": {
      "invoice_email": "gareth@codepotato.co.uk",
      "invoice_county": "Hampshire",
      "invoice_country": "United Kingdom",
      "invoice_postcode": "PO7 7YH",
      "invoice_address_1": "Suite E, 5 The Briars",
      "invoice_address_2": "Waterberry Drive",
      "invoice_town_city": "Waterlooville"
    },
    "country": "United Kingdom",
    "postcode": "PO7 7YH",
    "address_1": "Suite E, 5 The Briars",
    "address_2": "Waterberry Drive",
    "logo_icon": "https://api.plannrcrm.com/images/plannr-icon.jpg",
    "month_end": 25,
    "town_city": "Waterlooville",
    "created_at": "2025-06-20T18:21:22+01:00",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "ip_whitelist": [
      "192.168.0.1",
      "127.0.0.1"
    ],
    "brand_colours": {
      "sidebar_text": "#ffffff",
      "sidebar_hover": "#0A0A42",
      "email_sub_text": "#ffffff",
      "sidebar_accent": "#36367E",
      "sidebar_active": "#53DBB8",
      "email_background": "#0E0E56",
      "email_button_text": "#ffffff",
      "portal_background": "#f6f6f6",
      "portal_brand_title": "#323b4b",
      "sidebar_background": "#0E0E56",
      "portal_sidebar_icon": "#828994",
      "portal_sidebar_text": "#323b4b",
      "portal_account_email": "#828994",
      "portal_sidebar_title": "#11151d",
      "sidebar_title_primary": "#FFC634",
      "portal_brand_sub_title": "#828994",
      "portal_sidebar_divider": "#e3e5e9",
      "email_button_background": "#36367E",
      "portal_dashboard_bg_one": "#EF4583",
      "portal_dashboard_bg_two": "#FFC634",
      "sidebar_title_secondary": "#ffffff",
      "sidebar_title_background": "#36367E",
      "portal_sidebar_icon_hover": "#828994",
      "portal_sidebar_text_hover": "#323b4b",
      "portal_sidebar_icon_active": "#828994",
      "portal_sidebar_text_active": "#323b4b",
      "email_logo_background_panel": "#36367E",
      "portal_sidebar_button_hover": "#ffffff",
      "portal_sidebar_account_title": "#11151d",
      "portal_sidebar_button_active": "#ffffff",
      "sidebar_title_secondary_hover": "#ffffff",
      "portal_sidebar_button_background": "#f6f6f6"
    },
    "is_subscribed": true,
    "regulatory_text": "Regulatory text",
    "addon_subscriptions": "App\\Http\\Resources\\Addons\\AddonSubscriptionResource",
    "statement_frequency": "monthly",
    "task_board_template": "App\\Http\\Resources\\Board\\BoardResource",
    "keep_deleted_files_for": 30,
    "welcome_paragraph_html": "<h1>Welcome.</h1>",
    "email_welcome_paragraph_html": "Welcome to Plannr!",
    "show_fact_find_illustrations": true
  },
  "name": "Gareth Thompson",
  "role": "client",
  "tags": [
    {
      "name": "Mortgage",
      "slug": "mortgage",
      "uuid": "6af85155-e161-419e-ade6-515aff28619e",
      "colour": "#ef4582",
      "created_at": "2025-06-20T18:21:22+01:00",
      "updated_at": "2025-06-20T18:21:22+01:00"
    }
  ],
  "type": "client",
  "uuid": "affd1f0d-8fdf-4621-a815-9a83808d175b",
  "email": "gareth@codepotato.co.uk",
  "groups": [
    {
      "name": "finance",
      "slug": "finance",
      "uuid": "604153e6-c29a-4f93-9a12-f4078a908ac6",
      "created_at": "2025-06-20T18:21:22+01:00",
      "updated_at": "2025-06-20T18:21:22+01:00",
      "participants": {
        "name": {
          "example": "Gareth Thompson",
          "description": "Name of the account"
        },
        "role": {
          "example": "client",
          "description": "Role of the account"
        },
        "uuid": {
          "example": "4f4947bb-a272-4257-b0f8-5581f244ba58",
          "description": "UUID of the account"
        },
        "email": {
          "example": "gareth@codepotato.co.uk",
          "description": "Email of the account"
        },
        "last_name": {
          "example": "Thompson",
          "description": "Last name of the account"
        },
        "first_name": {
          "example": "Gareth",
          "description": "First name of the account"
        }
      },
      "participants_count": "3"
    }
  ],
  "owners": [
    {
      "firm": "App\\Http\\Resources\\FirmResource",
      "name": "Gareth Thompson",
      "role": "client",
      "tags": "App\\Http\\Resources\\TagResource",
      "type": "client",
      "uuid": "7faf495f-8a2d-4739-96fa-5cfd42b3f7d6",
      "email": "gareth@codepotato.co.uk",
      "groups": "App\\Http\\Resources\\GroupResource",
      "owners": "App\\Http\\Resources\\AccountResource",
      "last_name": "Thompson",
      "created_at": "2025-06-20T18:21:22+01:00",
      "first_name": "Gareth",
      "updated_at": "2025-06-20T18:21:22+01:00",
      "with_login": true,
      "inactive_at": "2025-06-20",
      "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
      "introduced_by": "App\\Http\\Resources\\AccountResource",
      "primary_email": "App\\Http\\Resources\\ContactDetailResource",
      "can_be_deleted": "false",
      "assigned_adviser": "App\\Http\\Resources\\AccountResource",
      "next_review_date": "2025-06-20T18:21:22+01:00",
      "has_joint_account": true,
      "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
      "first_contact_date": "2025-06-20T18:21:22+01:00",
      "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
      "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
      "joint_account_circle": "App\\Http\\Resources\\CircleResource",
      "ownership_percentage": 100,
      "previous_review_date": "2025-06-20T18:21:22+01:00",
      "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
      "assigned_administrator": "App\\Http\\Resources\\AccountResource",
      "anniversary_review_date": "2025-06-20T18:21:22+01:00"
    }
  ],
  "last_name": "Thompson",
  "created_at": "2025-06-20T18:21:22+01:00",
  "first_name": "Gareth",
  "updated_at": "2025-06-20T18:21:22+01:00",
  "with_login": true,
  "inactive_at": "2025-06-20",
  "custom_fields": [
    {
      "name": "Favourite Drink",
      "type": "string",
      "uuid": "587cde1c-45a8-4f58-beab-264bf8cf1e92",
      "value": "Coffee",
      "help_text": "This is the client's favourite drink.",
      "reference": "favourite_drink",
      "created_at": "2025-06-20T18:21:22+01:00",
      "updated_at": "2025-06-20T18:21:22+01:00",
      "is_required": false,
      "selection_options": [
        "Coffee",
        "Tea",
        "Water"
      ]
    }
  ],
  "introduced_by": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "6bba502a-78d5-4db0-8485-f2c0711f50c5",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:22+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:22+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:22+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:22+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:22+01:00"
  },
  "primary_email": {
    "name": "Work number",
    "type": "phone_number",
    "uuid": "34420044-1984-4f9d-9798-8f44745596b3",
    "value": "+443330903630",
    "accounts": "App\\Http\\Resources\\AccountResource",
    "created_at": "2025-06-20T18:21:22+01:00",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "phone_number_meta": {
      "country": "GB",
      "formatted": "0333 090 3630"
    }
  },
  "can_be_deleted": "false",
  "assigned_adviser": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "6e12d0ae-ec70-4f96-9980-8a9912a46972",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:22+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:22+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:22+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:22+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:22+01:00"
  },
  "next_review_date": "2025-06-20T18:21:22+01:00",
  "has_joint_account": true,
  "current_time_entry": {
    "name": "Research",
    "uuid": "49ed31cf-8427-453d-bbc1-c500805bf695",
    "account": "App\\Http\\Resources\\MinimalAccountResource",
    "end_date": "2025-06-20T17:59:22+01:00",
    "is_active": true,
    "trackable": "App\\Http\\Resources\\MinimalAccountResource",
    "created_at": "2025-06-20T18:21:22+01:00",
    "start_date": "2025-06-20T17:31:22+01:00",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "description": "This is a description.",
    "trackable_type": "Client",
    "total_time_in_minutes": 28,
    "computed_time_elapsed_in_seconds": 1680
  },
  "first_contact_date": "2025-06-20T18:21:22+01:00",
  "external_references": [
    {
      "uuid": "ea9787cf-160a-4826-a246-7641b492d570",
      "reference": "AB123456",
      "created_at": "2025-06-20T18:21:22+01:00",
      "updated_at": "2025-06-20T18:21:22+01:00",
      "third_party": "nucleus"
    }
  ],
  "assigned_paraplanner": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "d18c82b5-5214-4a4b-a27e-daaf69d48cbf",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:22+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:22+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:22+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:22+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:22+01:00"
  },
  "joint_account_circle": {
    "name": "Jones Family",
    "uuid": "710be183-94ab-490f-bac3-6c87f0b85069",
    "groups": "App\\Http\\Resources\\GroupResource",
    "accounts": "App\\Http\\Resources\\MinimalAccountResource",
    "created_at": "2025-06-20T18:21:22+01:00",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "joint_account_uuid": "b8a6b93d-33b7-4624-86f3-c0ad54592661"
  },
  "ownership_percentage": 100,
  "previous_review_date": "2025-06-20T18:21:22+01:00",
  "primary_phone_number": {
    "name": "Work number",
    "type": "phone_number",
    "uuid": "ea6b3fa6-8331-4c20-b194-0f7a83474e9b",
    "value": "+443330903630",
    "accounts": "App\\Http\\Resources\\AccountResource",
    "created_at": "2025-06-20T18:21:22+01:00",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "phone_number_meta": {
      "country": "GB",
      "formatted": "0333 090 3630"
    }
  },
  "assigned_administrator": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "10ec4353-021f-4d5e-9a47-91f83e48f440",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:22+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:22+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:22+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:22+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:22+01:00"
  },
  "anniversary_review_date": "2025-06-20T18:21:22+01:00"
}































































Responses

  • 200 application/json
    Hide response attributes Show response attributes object
GET /api/v1/addons/seccl/{addon}/nodes
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/addons/seccl/addon/nodes' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json"
Response examples (200)
{
  "id": "123",
  "name": "Test Node",
  "nodeType": "Test Type",
  "parentNodeId": "0"
}













































Update an address

PUT /api/v1/account/{account_uuid}/address/{uuid}

Path parameters

application/json

Body

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
PUT /api/v1/account/{account_uuid}/address/{uuid}
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/account/account_uuid/address/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"name":"Work Address","address_1":"Suite E, 5 The Briars","address_2":"Waterberry Drive","address_3":"The Innovative Centre","address_4":"Waterlooville","town_city":"Waterlooville","county":"Hampshire","postcode":"PO7 7YH","country":"United Kingdom","moved_in_month":6,"moved_in_year":2022,"moved_out_month":1,"moved_out_year":2024,"residential_status":"homeowner","residential_status_other":"Non-tenant occupier","primary":true}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "name": "Work Address",
  "address_1": "Suite E, 5 The Briars",
  "address_2": "Waterberry Drive",
  "address_3": "The Innovative Centre",
  "address_4": "Waterlooville",
  "town_city": "Waterlooville",
  "county": "Hampshire",
  "postcode": "PO7 7YH",
  "country": "United Kingdom",
  "moved_in_month": 6,
  "moved_in_year": 2022,
  "moved_out_month": 1,
  "moved_out_year": 2024,
  "residential_status": "homeowner",
  "residential_status_other": "Non-tenant occupier",
  "primary": true
}
Response examples (200)
{
  "name": "Work Address",
  "uuid": "ad56b45b-1996-4feb-aba4-a34c68317342",
  "county": "Hampshire",
  "country": "United Kingdom",
  "accounts": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "c0d8bf75-ecc5-4118-86a3-e00711230a27",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:22+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:22+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:22+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:22+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:22+01:00"
  },
  "postcode": "PO7 7YH",
  "address_1": "Suite E, 5 The Briars",
  "address_2": "Waterberry Drive",
  "address_3": "The Innovative Centre",
  "address_4": "Waterlooville",
  "town_city": "Waterlooville",
  "created_at": "2025-06-20T18:21:22+01:00",
  "updated_at": "2025-06-20T18:21:22+01:00",
  "move_in_date": "2024-06-20"
}




Addresses (v2)

APIs for managing addresses


























Path parameters

Query parameters

  • Filter by a comma separated list of UUIDs.

  • Filter by a comma separated list of UUIDs.

  • sort string

    Field to sort by. Valid fields are [created_at, updated_at]. Negative sign to denote DESC. Defaults to '-created_at'.

  • per_page integer

    the amount of audits per page (Default 15. Max 500).

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
GET /api/v1/employee/{employee_uuid}/audits
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/employee/employee_uuid/audits' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json"
Response examples (200)
{
  "data": [
    {
      "url": "https://plannr.co.uk",
      "type": "Sub Account",
      "uuid": "215cee43-4ad6-4608-84fe-f1b8ee583664",
      "event": "updated",
      "account": {
        "firm": "App\\Http\\Resources\\FirmResource",
        "name": "Gareth Thompson",
        "role": "client",
        "tags": "App\\Http\\Resources\\TagResource",
        "type": "client",
        "uuid": "42e94194-9f4d-4d63-aa75-34edbb4613d4",
        "email": "gareth@codepotato.co.uk",
        "groups": "App\\Http\\Resources\\GroupResource",
        "owners": "App\\Http\\Resources\\AccountResource",
        "last_name": "Thompson",
        "created_at": "2025-06-20T18:21:23+01:00",
        "first_name": "Gareth",
        "updated_at": "2025-06-20T18:21:23+01:00",
        "with_login": true,
        "inactive_at": "2025-06-20",
        "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
        "introduced_by": "App\\Http\\Resources\\AccountResource",
        "primary_email": "App\\Http\\Resources\\ContactDetailResource",
        "can_be_deleted": "false",
        "assigned_adviser": "App\\Http\\Resources\\AccountResource",
        "next_review_date": "2025-06-20T18:21:23+01:00",
        "has_joint_account": true,
        "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
        "first_contact_date": "2025-06-20T18:21:23+01:00",
        "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
        "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
        "joint_account_circle": "App\\Http\\Resources\\CircleResource",
        "ownership_percentage": 100,
        "previous_review_date": "2025-06-20T18:21:23+01:00",
        "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
        "assigned_administrator": "App\\Http\\Resources\\AccountResource",
        "anniversary_review_date": "2025-06-20T18:21:23+01:00"
      },
      "created_at": "2025-06-20T18:21:23+01:00",
      "ip_address": "127.0.0.1",
      "new_values": {
        "first_name": "johny"
      },
      "old_values": {
        "first_name": "john"
      },
      "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"
    }
  ]
}

















Automation Blueprints

APIs for managing Automation Blueprints





Query parameters

  • include string

    Comma separated list of relationships to include in the response. Valid relationships are [account,steps,webhook_targets].

  • Filter by a comma separated list of UUIDs.

  • Filter automation blueprints by which are active or not.

  • Filter automation blueprints by a certain trigger type.

  • Filter automation blueprints by a partial match to the blueprint name.

  • sort string

    Field to sort by. Valid fields are [created_at, updated_at, name]. Negative sign to denote DESC. Defaults to 'name'.

  • per_page integer

    Number of results to return with pagination (Default 15. Max 500).

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
GET /api/v1/automation-blueprints
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/automation-blueprints' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json"
Response examples (200)
{
  "data": [
    {
      "name": "Add new client on webhook",
      "uuid": "72f9dd32-d645-4e72-a653-7145801999d7",
      "steps": [
        {
          "name": "create a new client",
          "type": "client.create",
          "uuid": "526680e6-6a0b-49c0-99b8-327203037419",
          "updated": "2025-06-20T18:21:27+01:00",
          "created_at": "2025-06-20T18:21:27+01:00",
          "configuration": {
            "params": {
              "account_uuid": {
                "type": "ref",
                "value": "trigger.account.uuid"
              }
            }
          },
          "condition_state": false,
          "parent_step_uuid": "171d9b16-d4a0-4341-8d23-c93b79fae5e3"
        }
      ],
      "account": {
        "firm": "App\\Http\\Resources\\FirmResource",
        "name": "Gareth Thompson",
        "role": "client",
        "tags": "App\\Http\\Resources\\TagResource",
        "type": "client",
        "uuid": "781b97df-273a-45b3-b1ef-d08d9ca3764d",
        "email": "gareth@codepotato.co.uk",
        "groups": "App\\Http\\Resources\\GroupResource",
        "owners": "App\\Http\\Resources\\AccountResource",
        "last_name": "Thompson",
        "created_at": "2025-06-20T18:21:27+01:00",
        "first_name": "Gareth",
        "updated_at": "2025-06-20T18:21:27+01:00",
        "with_login": true,
        "inactive_at": "2025-06-20",
        "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
        "introduced_by": "App\\Http\\Resources\\AccountResource",
        "primary_email": "App\\Http\\Resources\\ContactDetailResource",
        "can_be_deleted": "false",
        "assigned_adviser": "App\\Http\\Resources\\AccountResource",
        "next_review_date": "2025-06-20T18:21:27+01:00",
        "has_joint_account": true,
        "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
        "first_contact_date": "2025-06-20T18:21:27+01:00",
        "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
        "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
        "joint_account_circle": "App\\Http\\Resources\\CircleResource",
        "ownership_percentage": 100,
        "previous_review_date": "2025-06-20T18:21:27+01:00",
        "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
        "assigned_administrator": "App\\Http\\Resources\\AccountResource",
        "anniversary_review_date": "2025-06-20T18:21:27+01:00"
      },
      "trigger": "client.create",
      "is_active": false,
      "conditions": [],
      "created_at": "2025-06-20T18:21:27+01:00",
      "updated_at": "2025-06-20T18:21:27+01:00",
      "steps_count": "1",
      "configuration": [],
      "webhook_targets": [
        {
          "url": "https://api.plannrcrm.com/api/v1/webhooks/01605357-9fba-4cab-b4f0-141476dfa4ea",
          "uuid": "cabe78e2-866b-4732-8996-2b3a4e78d38c",
          "created_at": "2025-06-20T18:21:27+01:00",
          "updated_at": "2025-06-20T18:21:27+01:00"
        }
      ]
    }
  ]
}

Headers

application/json

Body Required

  • name string Required

    Name of the automation

  • trigger string

    What triggers this automation, leave null if activation is manual

  • is_active boolean

    Is this automation currently active, defaults to false

  • conditions array[string]

    List of conditions to evaluate on the trigger before running automation, operator types can be on ofequals, not_equal_to, more_than, less_than, less_than_or_equal_to and more_than_or_equal_to

  • configuration array[string]

    Extra configuration options for the trigger of this blueprint

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • name string

      Name of the Automation Blueprint

    • trigger string

      What type of event will trigger this AutomationBlueprint

    • is_active boolean

      Is the automation currently active? If false will not create new execution instances

    • account object

      Account that made this automation blueprints

    • Conditions for the automation blueprint

    • Extra configuration options for the trigger of this blueprint

    • steps array[object]

      All blueprint steps attached to this blueprint

    • Amount of blueprints steps on this automation blueprint

    • webhook_targets array[object]

      List of webhook target endpoints that can be used to trigger this automation

POST /api/v1/automation-blueprints
curl \
 --request POST 'https://api.plannrcrm.com/api/v1/automation-blueprints' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"name":"Add a new client to system on calendly webhook","trigger":"webhook","is_active":false,"conditions":[{"field":"client.is_prospect","value":true,"operator":"equals"}],"configuration":["string"]}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "name": "Add a new client to system on calendly webhook",
  "trigger": "webhook",
  "is_active": false,
  "conditions": [
    {
      "field": "client.is_prospect",
      "value": true,
      "operator": "equals"
    }
  ],
  "configuration": [
    "string"
  ]
}
Response examples (200)
{
  "name": "Add new client on webhook",
  "uuid": "ebf7aa0e-ee5c-43d8-a698-8d101c6f9188",
  "steps": [
    {
      "name": "create a new client",
      "type": "client.create",
      "uuid": "b7dded58-25e1-4b91-a677-2fff87fffd7f",
      "updated": "2025-06-20T18:21:27+01:00",
      "created_at": "2025-06-20T18:21:27+01:00",
      "configuration": {
        "params": {
          "account_uuid": {
            "type": "ref",
            "value": "trigger.account.uuid"
          }
        }
      },
      "condition_state": false,
      "parent_step_uuid": "ee134141-a24e-42a5-97c1-e6b7d6f747a2"
    }
  ],
  "account": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "2336c460-26c9-4fde-956d-fbd31eb87832",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:27+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:27+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:27+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:27+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:27+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:27+01:00"
  },
  "trigger": "client.create",
  "is_active": false,
  "conditions": [],
  "created_at": "2025-06-20T18:21:27+01:00",
  "updated_at": "2025-06-20T18:21:27+01:00",
  "steps_count": "1",
  "configuration": [],
  "webhook_targets": [
    {
      "url": "https://api.plannrcrm.com/api/v1/webhooks/01605357-9fba-4cab-b4f0-141476dfa4ea",
      "uuid": "077d1ea6-7191-4d4d-9cb0-db9e1c5954c8",
      "created_at": "2025-06-20T18:21:27+01:00",
      "updated_at": "2025-06-20T18:21:27+01:00"
    }
  ]
}

Get a Automation Blueprint

GET /api/v1/automation-blueprints/{automationBlueprint_uuid}

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • name string

      Name of the Automation Blueprint

    • trigger string

      What type of event will trigger this AutomationBlueprint

    • is_active boolean

      Is the automation currently active? If false will not create new execution instances

    • account object

      Account that made this automation blueprints

    • Conditions for the automation blueprint

    • Extra configuration options for the trigger of this blueprint

    • steps array[object]

      All blueprint steps attached to this blueprint

    • Amount of blueprints steps on this automation blueprint

    • webhook_targets array[object]

      List of webhook target endpoints that can be used to trigger this automation

GET /api/v1/automation-blueprints/{automationBlueprint_uuid}
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/automation-blueprints/automationBlueprint_uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json"
Response examples (200)
{
  "name": "Add new client on webhook",
  "uuid": "fb7a0020-0a3a-4f86-a497-3870a4e7b5a1",
  "steps": [
    {
      "name": "create a new client",
      "type": "client.create",
      "uuid": "aea07da4-5905-4db7-ae1f-72b360b1c842",
      "updated": "2025-06-20T18:21:27+01:00",
      "created_at": "2025-06-20T18:21:27+01:00",
      "configuration": {
        "params": {
          "account_uuid": {
            "type": "ref",
            "value": "trigger.account.uuid"
          }
        }
      },
      "condition_state": false,
      "parent_step_uuid": "7a5fa833-eaed-445f-8bca-1023c9f42a4c"
    }
  ],
  "account": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "19a47e51-3af7-405e-b9bd-57b8f0af6d9a",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:27+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:27+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:27+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:27+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:27+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:27+01:00"
  },
  "trigger": "client.create",
  "is_active": false,
  "conditions": [],
  "created_at": "2025-06-20T18:21:27+01:00",
  "updated_at": "2025-06-20T18:21:27+01:00",
  "steps_count": "1",
  "configuration": [],
  "webhook_targets": [
    {
      "url": "https://api.plannrcrm.com/api/v1/webhooks/01605357-9fba-4cab-b4f0-141476dfa4ea",
      "uuid": "13769904-6ad2-4a2c-b13e-e240e103201b",
      "created_at": "2025-06-20T18:21:27+01:00",
      "updated_at": "2025-06-20T18:21:27+01:00"
    }
  ]
}


































Headers

application/json

Body Required

  • account_uuids array[string] Required

    The UUIDs of the accounts who should own the bank account. These must only be client accounts.

  • account_name string Required

    The friendly name for the bank account.

  • account_number string Required

    The bank account number.

  • sort_code string Required

    The bank account sort code

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
POST /api/v2/bank-accounts
curl \
 --request POST 'https://api.plannrcrm.com/api/v2/bank-accounts' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"account_uuids":["58cccd10-6f2c-4c1e-a9f9-17a161734285","3aaa3165-859a-4fcc-9d5f-a00d77d27452"],"account_name":"My Savings Account","account_number":"01234567","sort_code":"012345"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "account_uuids": [
    "58cccd10-6f2c-4c1e-a9f9-17a161734285",
    "3aaa3165-859a-4fcc-9d5f-a00d77d27452"
  ],
  "account_name": "My Savings Account",
  "account_number": "01234567",
  "sort_code": "012345"
}
Response examples (200)
{
  "uuid": "1a480d2f-6071-4b0a-800c-53a1c868490e",
  "accounts": {
    "name": "Gareth Thompson",
    "role": "client",
    "type": "client",
    "uuid": "f90ded28-9198-4a9c-a20b-3f40b44b5d53",
    "email": "gareth@codepotato.co.uk",
    "last_name": "Thompson",
    "photo_url": "https://eu.ui-avatars.com/api/?name=Gareth+Thompson",
    "created_at": "2025-06-20T18:21:29+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:29+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource"
  },
  "sort_code": "123456",
  "created_at": "2025-06-20T18:21:29+01:00",
  "updated_at": "2025-06-20T18:21:29+01:00",
  "account_name": "Savings Account",
  "account_number": "12345678"
}














































































Blueprint Steps

APIs for managing Blueprint Steps























































Documents Generated

GET /api/v1/metrics/documents/generated

Get the total number of documents generated for a firm on the current date or the end of the date supplied.

Query parameters

  • date string

    The date to get the key metric from in YYYY-MM-DD format (calculations are made from the end of the day).

application/json

Body

  • date date

    The date which you would like to run the key metric from.

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
    • data array[object]

      The value of the key metric.

GET /api/v1/metrics/documents/generated
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/metrics/documents/generated' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"date":"2023-01-01"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "date": "2023-01-01"
}
Response examples (200)
{
  "data": [
    {
      "data": "123",
      "date": "2023-06-30",
      "metric": "time_logged",
      "requested_at": "2023-07-01 12:30:45"
    }
  ]
}
















Plans

GET /api/v1/metrics/plans

Get the total number of plans for a firm for the current date or the end of the date supplied.

Query parameters

  • date string

    The date to get the key metric from in YYYY-MM-DD format (calculations are made from the end of the day).

application/json

Body

  • date date

    The date which you would like to run the key metric from.

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
    • data array[object]

      The value of the key metric.

GET /api/v1/metrics/plans
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/metrics/plans' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"date":"2023-01-01"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "date": "2023-01-01"
}
Response examples (200)
{
  "data": [
    {
      "data": "123",
      "date": "2023-06-30",
      "metric": "time_logged",
      "requested_at": "2023-07-01 12:30:45"
    }
  ]
}
















Cases

APIs for managing case statuses

















application/json

Body

  • name string

    Name of the case

  • status string

    The uuid of the status chosen for the case

  • The case status's new position on the status list. Starting from 1. Only used if you are formatting cases in a kanban layout.

  • assigned_to_uuids array[string]

    Array of account UUIDs

  • group_uuids array[string]

    UUIDs of groups that will be assigned when the case is created.

  • Timestamp of when the case will be reviewed

  • type string

    The uuid of the type chosen for the case

  • value integer

    Expect value the case will generate in pennies

  • Timestamp of when the case was completed

  • plans array[string]

    The uuids of the plans that will be associated to the case when it is created. Leave NULL to disassociate all plans from the case.

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • name string

      Name of the case

    • slug string

      Slug of the case

    • status object

      Case status

    • type object

      Case type

    • Timestamp of when the case should be reviewed

    • assigned_to_uuids array[string]

      UUIDs of accounts that will be assigned to the case when it is created.

    • group_uuids array[string]

      UUIDs of groups that will be assigned when the case is created.

    • Timestamp of when the case was completed

    • value object

      Expected value of this case

    • The case status's position on the status list. Starting from 1. Only used if you are formatting cases in a kanban layout.

    • The number of participants on the case

    • Participants on this case (if included)

    • UUID of the task board

    • plans object

      Plans in this case (if included)

    • custom_fields array[object]

      Any custom fields on the model.

PUT /api/v1/cases/{uuid}
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/cases/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"name":"Annual review","status":"8685aa7d-2689-4d80-8e41-74dff359507d","status_position":4,"assigned_to_uuids":["ff0b6a46-b7b4-4a1e-bfa5-ad6ff574ca79","38f6c56e-e7f5-414f-9789-0733b3176660"],"group_uuids":["5436328d-398b-494b-88ff-447813bdfe65","24f1818c-3ad0-4772-bf47-9ad3bd84a122"],"review_at":"2025-06-20T18:21:24+01:00","type":"fa35f772-9eb2-425e-870e-6e78628d310f","value":15099,"completed_at":"2025-06-20T18:21:24+01:00","plans":[null,null]}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "name": "Annual review",
  "status": "8685aa7d-2689-4d80-8e41-74dff359507d",
  "status_position": 4,
  "assigned_to_uuids": [
    "ff0b6a46-b7b4-4a1e-bfa5-ad6ff574ca79",
    "38f6c56e-e7f5-414f-9789-0733b3176660"
  ],
  "group_uuids": [
    "5436328d-398b-494b-88ff-447813bdfe65",
    "24f1818c-3ad0-4772-bf47-9ad3bd84a122"
  ],
  "review_at": "2025-06-20T18:21:24+01:00",
  "type": "fa35f772-9eb2-425e-870e-6e78628d310f",
  "value": 15099,
  "completed_at": "2025-06-20T18:21:24+01:00",
  "plans": [
    null,
    null
  ]
}
Response examples (200)
{
  "name": "finance",
  "slug": "finance",
  "type": {
    "name": "Mortgage Plan",
    "uuid": "eebcba00-8362-45af-9a7c-42fcfe0546f1",
    "created_at": "2025-06-20T18:21:24+01:00",
    "updated_at": "2025-06-20T18:21:24+01:00"
  },
  "uuid": "b6334398-78a5-4f21-9535-1351e07b8d4b",
  "plans": {
    "name": "Johns ISA",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "cash_account",
    "uuid": "fd3053aa-21e4-45c5-bdce-708761d56579",
    "wrap": "App\\Http\\Resources\\Plans\\PlanResource",
    "cases": "App\\Http\\Resources\\CasesResource",
    "value": {
      "amount": {
        "example": "4000",
        "description": "Money amount at their lowest denominator (for example: pennies)"
      },
      "currency": {
        "example": "GBP",
        "description": "Currency of the money"
      },
      "formatted": {
        "example": "£40.00",
        "description": "Money amount formatted with currency"
      }
    },
    "claims": "App\\Http\\Resources\\Plans\\ClaimResource",
    "client": "App\\Http\\Resources\\AccountResource",
    "covers": "App\\Http\\Resources\\Plans\\CoverResource",
    "seller": "App\\Http\\Resources\\AccountResource",
    "status": "inactive",
    "accounts": "App\\Http\\Resources\\AccountResource",
    "on_panel": true,
    "provider": "App\\Http\\Resources\\Plans\\ProviderResource",
    "sub_type": "lifetime isa",
    "opened_at": "2025-06-20T18:21:24+01:00",
    "valued_at": "2025-06-20T18:21:24+01:00",
    "created_at": "2025-06-20T18:21:24+01:00",
    "statistics": {
      "recent_growth": 100
    },
    "updated_at": "2025-06-20T18:21:24+01:00",
    "advice_area": "non_investment_insurance",
    "inactive_at": "2025-06-20T18:21:24+01:00",
    "review_date": "2024-06-20",
    "linked_plans": "App\\Http\\Resources\\Plans\\PlanResource",
    "main_account": "App\\Http\\Resources\\Plans\\SubAccountResource",
    "sub_accounts": "App\\Http\\Resources\\Plans\\SubAccountResource",
    "under_advice": true,
    "abstract_type": "asset",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "is_wrap_child": false,
    "linked_owners": "App\\Http\\Resources\\AccountResource",
    "policy_number": "AVIVA-123",
    "show_on_joint": true,
    "wrap_children": "App\\Http\\Resources\\Plans\\PlanResource",
    "can_be_deleted": "false",
    "total_benefits": {
      "critical_illness": {
        "amount": {
          "example": "15000000",
          "description": "Money amount at their lowest denominator (for example: pennies)"
        },
        "currency": {
          "example": "GBP",
          "description": "Currency of the money"
        },
        "formatted": {
          "example": "£150,000.00",
          "description": "Money amount formatted with currency"
        }
      },
      "family_income_benefit": {
        "amount": {
          "example": "10000000",
          "description": "Money amount at their lowest denominator (for example: pennies)"
        },
        "currency": {
          "example": "GBP",
          "description": "Currency of the money"
        },
        "formatted": {
          "example": "£100,000.00",
          "description": "Money amount formatted with currency"
        }
      }
    },
    "inactive_reason": "claimed",
    "is_group_scheme": false,
    "is_wrap_product": false,
    "latest_valuations": "App\\Http\\Resources\\Plans\\ValuationResource",
    "original_valued_at": "2025-06-19T18:21:24+01:00",
    "proposal_reference": "AB123456",
    "agency_in_your_name": true,
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "is_sub_group_scheme": false,
    "total_benefit_amount": {
      "amount": {
        "example": "25000000",
        "description": "Money amount at their lowest denominator (for example: pennies)"
      },
      "currency": {
        "example": "GBP",
        "description": "Currency of the money"
      },
      "formatted": {
        "example": "£250,000.00",
        "description": "Money amount formatted with currency"
      }
    },
    "is_group_scheme_member": false,
    "originally_sold_by_firm": true,
    "agency_in_your_name_from": "2024-06-20",
    "contract_enquiry_account": "App\\Http\\Resources\\AccountResource",
    "visible_on_client_portal": true,
    "include_in_client_valuation": true
  },
  "value": {
    "amount": {
      "example": "4000",
      "description": "Money amount at their lowest denominator (for example: pennies)"
    },
    "currency": {
      "example": "GBP",
      "description": "Currency of the money"
    },
    "formatted": {
      "example": "£40.00",
      "description": "Money amount formatted with currency"
    }
  },
  "status": {
    "name": "To Be Reviewed",
    "uuid": "409616ca-7515-4ea5-b690-8b4ea004102e",
    "colour": "#23852B",
    "position": 5,
    "created_at": "2025-06-20T18:21:24+01:00",
    "updated_at": "2025-06-20T18:21:24+01:00",
    "is_type_completed": false
  },
  "review_at": "2025-06-20T18:21:24+01:00",
  "created_at": "2025-06-20T18:21:24+01:00",
  "updated_at": "2025-06-20T18:21:24+01:00",
  "group_uuids": [
    "aac7587e-7207-4569-ade6-a73e3a785d36"
  ],
  "completed_at": "2025-06-20T18:21:24+01:00",
  "participants": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "b6f4b346-e719-40fa-9693-bb61b3b33ada",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:24+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:24+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:24+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:24+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:24+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:24+01:00"
  },
  "custom_fields": [
    {
      "name": "Favourite Drink",
      "type": "string",
      "uuid": "570cd1d0-f43e-4967-bcab-c10c5a682835",
      "value": "Coffee",
      "help_text": "This is the client's favourite drink.",
      "reference": "favourite_drink",
      "created_at": "2025-06-20T18:21:24+01:00",
      "updated_at": "2025-06-20T18:21:24+01:00",
      "is_required": false,
      "selection_options": [
        "Coffee",
        "Tea",
        "Water"
      ]
    }
  ],
  "status_position": 4,
  "task_board_uuid": "52abaf0d-43f0-467a-842f-ef7a4a3f4a04",
  "assigned_to_uuids": [
    "cb02acb2-4369-4915-bede-397f981007f3"
  ],
  "participants_count": 4
}

















































































Get all Accounts for the Circle

GET /api/v1/circles/{circle_uuid}/accounts

Gets a list of accounts for the circle with related data

Query parameters

  • Filter by a comma separated list of account UUIDs.

  • sort string

    Field to sort by. Valid fields are [created_at, updated_at, name, email]. Negative sign to denote DESC. Defaults to 'name'.

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
GET /api/v1/circles/{circle_uuid}/accounts
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/circles/circle_uuid/accounts' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "data": [
    {
      "name": "Gareth Thompson",
      "uuid": "131b0102-63ac-416a-a349-6972a4bb9002",
      "email": "gareth@codepotato.co.uk",
      "logins": [
        {
          "firm": "App\\Http\\Resources\\FirmResource",
          "uuid": "17f843e7-e27d-44a9-9804-653684e8fc8b",
          "email": "gareth@plannrcrm.com",
          "account": "App\\Http\\Resources\\AccountResource",
          "primary": false,
          "last_name": "Thompson",
          "created_at": "2025-06-20T18:21:23+01:00",
          "expires_at": "2025-09-28T18:21:23+01:00",
          "first_name": "Gareth",
          "updated_at": "2025-06-20T18:21:23+01:00",
          "goals_enabled": true,
          "tasks_enabled": true,
          "wealth_enabled": true,
          "is_impersonated": false,
          "welcome_enabled": true,
          "factfind_enabled": true,
          "has_write_permission": false,
          "has_delete_permission": false,
          "receives_unread_notifications_email": true
        }
      ],
      "created_at": "2025-06-20T18:21:23+01:00",
      "updated_at": "2025-06-20T18:21:23+01:00",
      "linked_clients": [
        {
          "name": "Gareth",
          "uuid": "6c39d1ae-bdb3-48aa-baa5-bd6a47757acb",
          "relationship": "Father"
        }
      ]
    }
  ]
}








Get Wealth summary of all accounts of a circle

GET /api/v1/circles/{circle_uuid}/wealth

Wealth Aggregate net worth output for all clients of a circle

Query parameters

  • date string

    Get the clients net worth at a particular date in history. Get current net worth when not provided.

  • If true then the net worth will also include other plans the circle clients are linked to.

  • If true then the net worth will also include inactive plans.

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
GET /api/v1/circles/{circle_uuid}/wealth
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/circles/circle_uuid/wealth' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "data": [
    {
      "total": {
        "amount": {
          "example": "100000000",
          "description": "Money amount at their lowest denominator (for example: pennies)"
        },
        "currency": {
          "example": "GBP",
          "description": "Currency of the money"
        },
        "formatted": {
          "example": "£1,000,000.00",
          "description": "Money amount formatted with currency"
        }
      },
      "valued_at": "2025-06-20T18:21:23+01:00",
      "plan_types": {
        "annuity": {
          "amount": {
            "example": "9172106",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£91,721.06",
            "description": "Money amount formatted with currency"
          }
        },
        "pension": {
          "amount": {
            "example": "6850594",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£68,505.94",
            "description": "Money amount formatted with currency"
          }
        },
        "mortgage": {
          "amount": {
            "example": "3630342",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£36,303.42",
            "description": "Money amount formatted with currency"
          }
        },
        "investment": {
          "amount": {
            "example": "3848845",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£38,488.45",
            "description": "Money amount formatted with currency"
          }
        },
        "fixed_asset": {
          "amount": {
            "example": "8394776",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£83,947.76",
            "description": "Money amount formatted with currency"
          }
        },
        "loan_credit": {
          "amount": {
            "example": "7564545",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£75,645.45",
            "description": "Money amount formatted with currency"
          }
        },
        "cash_account": {
          "amount": {
            "example": "9452110",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£94,521.10",
            "description": "Money amount formatted with currency"
          }
        },
        "group_protection": {
          "amount": {
            "example": "9767027",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£97,670.27",
            "description": "Money amount formatted with currency"
          }
        },
        "general_insurance": {
          "amount": {
            "example": "3091804",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£30,918.04",
            "description": "Money amount formatted with currency"
          }
        },
        "protection_policy": {
          "amount": {
            "example": "8796070",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£87,960.70",
            "description": "Money amount formatted with currency"
          }
        }
      },
      "abstract_types": {
        "assets": {
          "amount": {
            "example": "59500000",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£595,000.00",
            "description": "Money amount formatted with currency"
          }
        },
        "protection": {
          "amount": {
            "example": "8000000",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£80,000.00",
            "description": "Money amount formatted with currency"
          }
        },
        "liabilities": {
          "amount": {
            "example": "32500000",
            "description": "Money amount at their lowest denominator (for example: pennies)"
          },
          "currency": {
            "example": "GBP",
            "description": "Currency of the money"
          },
          "formatted": {
            "example": "£325,000.00",
            "description": "Money amount formatted with currency"
          }
        }
      }
    }
  ]
}






















































Clients

APIs for managing clients













































































Cloning

APIs for cloning models





Contact Details (v1)

APIs for managing account contact details





Create a contact detail

POST /api/v1/account/{account_uuid}/contact-detail

Headers

Path parameters

application/json

Body Required

  • type string Required

    Valid types: email and phone_number

  • name string Required

    Description of contact detail

  • value string Required

    Value of contact detail. If the type is phone number, the format defaults to GB. You can provide an array ["country" => "AU", "number" => "+61 2 3456 7890"] if you want to use a different format.

  • primary boolean

    Make this contact type the primary contact. Will make all other contact details of the same type no longer primary.

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • type string

      Contact detail type

    • name string

      Contact detail description

    • value string

      Contact detail value

    • If the type is a phone number, this additional field will be displayed giving you information about the phone number.

    • accounts object

      Accounts that own contact detail

POST /api/v1/account/{account_uuid}/contact-detail
curl \
 --request POST 'https://api.plannrcrm.com/api/v1/account/account_uuid/contact-detail' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"type":"phone_number","name":"Work phone number","value":"+443330903630","primary":true}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "type": "phone_number",
  "name": "Work phone number",
  "value": "+443330903630",
  "primary": true
}
Response examples (200)
{
  "name": "Work number",
  "type": "phone_number",
  "uuid": "fa1e9dc3-e862-4d30-97d4-a53436f3fb6e",
  "value": "+443330903630",
  "accounts": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "e078c267-92fb-4abd-8216-d019d934869e",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:22+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:22+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:22+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:22+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:22+01:00"
  },
  "created_at": "2025-06-20T18:21:22+01:00",
  "updated_at": "2025-06-20T18:21:22+01:00",
  "phone_number_meta": {
    "country": "GB",
    "formatted": "0333 090 3630"
  }
}

















Headers

application/json

Body Required

  • type string Required

    Valid types: email and phone_number

  • name string Required

    Description of contact detail

  • value string Required

    Value of contact detail. If the type is phone number, the format defaults to GB. You can provide an array ["country" => "AU", "number" => "+61 2 3456 7890"] if you want to use a different format.

  • is_primary boolean

    Make this contact type the primary contact. Will make all other contact details of the same type no longer primary.

  • account_uuids array[string] Required

    The UUIDs of the accounts who should own the contact detail. These must only be client accounts.

  • The UUIDs of the accounts who should have the contact detail as their primary contact detail.

Responses

  • 201 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • type string

      Contact detail type

    • name string

      Contact detail description

    • value string

      Contact detail value

    • If the type is a phone number, this additional field will be displayed giving you information about the phone number.

    • accounts object

      Accounts that own contact detail

POST /api/v2/contact-details
curl \
 --request POST 'https://api.plannrcrm.com/api/v2/contact-details' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"type":"phone_number","name":"Work phone number","value":"+443330903630","is_primary":true,"account_uuids":["18635c2a-2b39-4bd2-8b5e-b6290bff4bcc","30db604b-0e77-4750-b712-65df3559d4a2"],"primary_account_uuids":["2135c101-b16b-47aa-b262-ed9210c33270","57bf06de-65fc-493b-b7fb-9ef4c03a717e"]}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "type": "phone_number",
  "name": "Work phone number",
  "value": "+443330903630",
  "is_primary": true,
  "account_uuids": [
    "18635c2a-2b39-4bd2-8b5e-b6290bff4bcc",
    "30db604b-0e77-4750-b712-65df3559d4a2"
  ],
  "primary_account_uuids": [
    "2135c101-b16b-47aa-b262-ed9210c33270",
    "57bf06de-65fc-493b-b7fb-9ef4c03a717e"
  ]
}
Response examples (201)
{
  "name": "Work number",
  "type": "phone_number",
  "uuid": "99445d9e-21d5-438a-b1a9-e0400f1df2af",
  "value": "+443330903630",
  "accounts": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "73bb6454-5fdf-4bb3-aa4d-c935fd1ca70a",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:29+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:29+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:29+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:29+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:29+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:29+01:00"
  },
  "created_at": "2025-06-20T18:21:29+01:00",
  "updated_at": "2025-06-20T18:21:29+01:00",
  "phone_number_meta": {
    "country": "GB",
    "formatted": "0333 090 3630"
  }
}


































Headers

Path parameters

Responses

  • 200 application/json
    Hide response attribute Show response attribute object
POST /api/v1/conversation/{conversation_uuid}/mentions
curl \
 --request POST 'https://api.plannrcrm.com/api/v1/conversation/conversation_uuid/mentions' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "data": [
    [
      [
        {
          "item": "Gareth Thompson",
          "contents": "<span data-type=\"mention\" data-account-uuid=\"6741b91b-e4be-436a-af1f-c523e886ca39\">@Gareth Thompson</span>"
        }
      ]
    ]
  ]
}







































































































































Query parameters

  • Filter by a comma separated list of UUIDs.

  • Filter the custom fields by a specific model type. For example: ?filter[model_type]=client

  • sort string

    Field to sort by. Valid fields are [created_at, updated_at, name, model_type, position]. Negative sign to denote DESC. Defaults to 'position'.

  • per_page integer

    Number of results to return with pagination (Default 15. Max 500).

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the custom field

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • type string

      The type of custom field

    • name string

      The name of the custom field

    • The reference of the custom field, used when updating the custom field on the model.

    • Denotes if the custom field is required

    • The type of model that the custom field is for.

    • Optional help text to aide the custom field. Will be displayed on Plannr.

    • firm object

      The custom field firm

    • selection_options array[string]

      This is the array of available options for the selection box. If the type is "selection" this array will be provided.

    • Denotes if the custom field is visible and editable to clients.

    • position integer

      The position of the custom field

GET /api/v1/custom-field
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/custom-field' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json"
Response examples (200)
{
  "firm": {
    "tax": 17.5,
    "logo": "https://api.plannrcrm.com/images/plannr.jpg",
    "name": "Codepotato",
    "slug": "codepotato",
    "uuid": "2d1e2434-e362-46c2-8590-dc195704d779",
    "county": "Hampshire",
    "billing": {
      "invoice_email": "gareth@codepotato.co.uk",
      "invoice_county": "Hampshire",
      "invoice_country": "United Kingdom",
      "invoice_postcode": "PO7 7YH",
      "invoice_address_1": "Suite E, 5 The Briars",
      "invoice_address_2": "Waterberry Drive",
      "invoice_town_city": "Waterlooville"
    },
    "country": "United Kingdom",
    "postcode": "PO7 7YH",
    "address_1": "Suite E, 5 The Briars",
    "address_2": "Waterberry Drive",
    "logo_icon": "https://api.plannrcrm.com/images/plannr-icon.jpg",
    "month_end": 25,
    "town_city": "Waterlooville",
    "created_at": "2025-06-20T18:21:28+01:00",
    "updated_at": "2025-06-20T18:21:28+01:00",
    "ip_whitelist": [
      "192.168.0.1",
      "127.0.0.1"
    ],
    "brand_colours": {
      "sidebar_text": "#ffffff",
      "sidebar_hover": "#0A0A42",
      "email_sub_text": "#ffffff",
      "sidebar_accent": "#36367E",
      "sidebar_active": "#53DBB8",
      "email_background": "#0E0E56",
      "email_button_text": "#ffffff",
      "portal_background": "#f6f6f6",
      "portal_brand_title": "#323b4b",
      "sidebar_background": "#0E0E56",
      "portal_sidebar_icon": "#828994",
      "portal_sidebar_text": "#323b4b",
      "portal_account_email": "#828994",
      "portal_sidebar_title": "#11151d",
      "sidebar_title_primary": "#FFC634",
      "portal_brand_sub_title": "#828994",
      "portal_sidebar_divider": "#e3e5e9",
      "email_button_background": "#36367E",
      "portal_dashboard_bg_one": "#EF4583",
      "portal_dashboard_bg_two": "#FFC634",
      "sidebar_title_secondary": "#ffffff",
      "sidebar_title_background": "#36367E",
      "portal_sidebar_icon_hover": "#828994",
      "portal_sidebar_text_hover": "#323b4b",
      "portal_sidebar_icon_active": "#828994",
      "portal_sidebar_text_active": "#323b4b",
      "email_logo_background_panel": "#36367E",
      "portal_sidebar_button_hover": "#ffffff",
      "portal_sidebar_account_title": "#11151d",
      "portal_sidebar_button_active": "#ffffff",
      "sidebar_title_secondary_hover": "#ffffff",
      "portal_sidebar_button_background": "#f6f6f6"
    },
    "is_subscribed": true,
    "regulatory_text": "Regulatory text",
    "addon_subscriptions": "App\\Http\\Resources\\Addons\\AddonSubscriptionResource",
    "statement_frequency": "monthly",
    "task_board_template": "App\\Http\\Resources\\Board\\BoardResource",
    "keep_deleted_files_for": 30,
    "welcome_paragraph_html": "<h1>Welcome.</h1>",
    "email_welcome_paragraph_html": "Welcome to Plannr!",
    "show_fact_find_illustrations": true
  },
  "name": "Favourite Drink",
  "type": "string",
  "uuid": "ce516519-93d1-43b2-aeb8-d7825775aedd",
  "position": 5,
  "help_text": "This is the client's favourite drink.",
  "reference": "favourite_drink",
  "created_at": "2025-06-20T18:21:28+01:00",
  "model_type": "client",
  "updated_at": "2025-06-20T18:21:28+01:00",
  "is_required": false,
  "selection_options": [
    "Coffee",
    "Tea",
    "Water"
  ],
  "is_visible_to_clients": true
}







































































Get a document template

GET /api/v1/document-template/{documentTemplate_uuid}

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • version integer

      The document builder version. Used for internal purposes only. Defaults to 3

    • name string

      The name of the document template.

    • The required dependant variables of the document template.

    • The download URL of the DOCX content. This is intended for the user to download if they are signed into Plannr. You can access this data via the API using the route in /api/v1.

    • The download URL of the SFDT (SyncFusion) content. This is intended for the user to download if they are signed into Plannr. You can access this data via the API using the route in /api/v1.

    • The download URL of the PDF content. This is intended for the user to download if they are signed into Plannr. You can access this data via the API using the route in /api/v1.

    • The image preview URL of the template. This is intended for the user to preview the template before opening it. You can access this data via the API using the route in /api/v1.

GET /api/v1/document-template/{documentTemplate_uuid}
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/document-template/documentTemplate_uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "name": "Welcome Template",
  "uuid": "b37b9024-4e5f-4511-a45a-0016906fa4ac",
  "version": 3,
  "created_at": "2025-06-20T18:21:26+01:00",
  "updated_at": "2025-06-20T18:21:26+01:00",
  "public_pdf_url": "https://plannr.valet/document-template/33b01754-6fc5-427f-9580-3d32ffb22795/content/pdf?plannr_account_uuid=fab07e1f-7a45-4ab8-a8a4-3b3847efc406",
  "public_docx_url": "https://plannr.valet/document-template/ab0042ea-0912-44f3-9047-62806234d216/content/docx?plannr_account_uuid=adfc55c7-1dae-4863-bdb9-3c414c792e4a",
  "public_sfdt_url": "https://plannr.valet/document-template/c173328b-d967-4ece-b724-779964803f2d/content/sfdt?plannr_account_uuid=902e757a-ece7-4127-a56e-5a5ed0586c5d",
  "public_preview_url": "https://plannr.valet/document-template/f112fe21-666b-4c56-8fdf-749cb5af9c9c/content/preview?plannr_account_uuid=f6470b4a-5ae5-4b34-b56c-ba6eb52dff80",
  "required_dependants": {
    "client-1": "client"
  }
}




































Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • version integer

      The document builder version. Used for internal purposes only. Defaults to 3

    • name string

      The name of the document.

    • status string

      The status of the document.

    • The last error that occured during publishing.

    • The required dependant variables of the document.

    • The dependants submitted to the document previously.

    • The download URL of the DOCX content. This is intended for the user to download if they are signed into Plannr. You can access this data via the API using the route in /api/v1.

    • The download URL of the SFDT (SyncFusion) content. This is intended for the user to download if they are signed into Plannr. You can access this data via the API using the route in /api/v1.

    • The download URL of the PDF content. This is intended for the user to download if they are signed into Plannr. You can access this data via the API using the route in /api/v1.

    • The image preview URL of the document. This is intended for the user to preview the document before opening it. You can access this data via the API using the route in /api/v1.

GET /api/v1/document/{uuid}
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/document/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "name": "Welcome Template",
  "uuid": "c15e6bb0-1f10-4dde-8675-44880c61503d",
  "status": "published",
  "version": 3,
  "created_at": "2025-06-20T18:21:26+01:00",
  "updated_at": "2025-06-20T18:21:26+01:00",
  "public_pdf_url": "https://plannr.valet/document/3363a541-69c1-4fcc-984a-8918670e0d28/content/pdf?plannr_account_uuid=c548dcf9-0907-4ad7-b692-02bcd31f829f",
  "public_docx_url": "https://plannr.valet/document/c1cfcc57-235c-4367-98ed-e8f3eb582280/content/docx?plannr_account_uuid=6871387d-e760-4287-a463-53c9e6f5e5c7",
  "public_sfdt_url": "https://plannr.valet/document/db67e75c-52b2-4ace-9547-7d791299e884/content/sfdt?plannr_account_uuid=69bdf115-3992-487e-9c9a-bacb39d00352",
  "known_dependants": {
    "client-1": "ee446253-ac69-4356-a386-60471e618908"
  },
  "public_preview_url": "https://plannr.valet/document/b73d9199-3394-442f-a90b-53089dcac866/content/preview?plannr_account_uuid=ca2d8a52-209b-4a49-873d-691719a9a16f",
  "required_dependants": {
    "client-1": "client"
  },
  "last_publishing_error": "There was an error converting this file to PDF. Please try again later."
}








Download Document as DOCX

GET /api/v1/document/{document_uuid}/content/docx

Responses

GET /api/v1/document/{document_uuid}/content/docx
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/document/document_uuid/content/docx' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{}







































































application/json

Body Required

  • The first name of the employee.

  • The last name of the employee.

  • email string

    The email of the employee. Required when with_login is present.

  • with_login boolean Required

    Denotes if the employee needs a billable login.

  • The uuid of the senior employee that the employee directly reports to

  • role string

    The role of the employee.

  • departments array[string]

    The departments the employee is part of

  • Adviser split

  • groups array[string]

    Group UUIDs to sync employee to. Null can be provided to clear an employees groups

  • Employee's RMAR advice type

Responses

PUT /api/v1/employee/{uuid}
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/employee/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"first_name":"Gareth","last_name":"Thompson","email":"gareth.thompson@plannrcrm.com","with_login":true,"assigned_adviser_uuid":"0712bf32-08cd-4a94-abdc-e8a3fb20462a","role":"owner","departments":["paraplanner","adviser"],"adviser_split_uuid":"b835f621-8911-4e64-ab23-f75be0744d97","groups":["3e0c7253-ff40-4821-b18b-e9538da3bf6f","43533521-9f31-4706-b496-9b7862d3bed8"],"advice_type":"independent"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "first_name": "Gareth",
  "last_name": "Thompson",
  "email": "gareth.thompson@plannrcrm.com",
  "with_login": true,
  "assigned_adviser_uuid": "0712bf32-08cd-4a94-abdc-e8a3fb20462a",
  "role": "owner",
  "departments": [
    "paraplanner",
    "adviser"
  ],
  "adviser_split_uuid": "b835f621-8911-4e64-ab23-f75be0744d97",
  "groups": [
    "3e0c7253-ff40-4821-b18b-e9538da3bf6f",
    "43533521-9f31-4706-b496-9b7862d3bed8"
  ],
  "advice_type": "independent"
}
Response examples (200)
{
  "firm": {
    "tax": 17.5,
    "logo": "https://api.plannrcrm.com/images/plannr.jpg",
    "name": "Codepotato",
    "slug": "codepotato",
    "uuid": "367ffc3c-b0fc-474a-835c-10edc8a61158",
    "county": "Hampshire",
    "billing": {
      "invoice_email": "gareth@codepotato.co.uk",
      "invoice_county": "Hampshire",
      "invoice_country": "United Kingdom",
      "invoice_postcode": "PO7 7YH",
      "invoice_address_1": "Suite E, 5 The Briars",
      "invoice_address_2": "Waterberry Drive",
      "invoice_town_city": "Waterlooville"
    },
    "country": "United Kingdom",
    "postcode": "PO7 7YH",
    "address_1": "Suite E, 5 The Briars",
    "address_2": "Waterberry Drive",
    "logo_icon": "https://api.plannrcrm.com/images/plannr-icon.jpg",
    "month_end": 25,
    "town_city": "Waterlooville",
    "created_at": "2025-06-20T18:21:23+01:00",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "ip_whitelist": [
      "192.168.0.1",
      "127.0.0.1"
    ],
    "brand_colours": {
      "sidebar_text": "#ffffff",
      "sidebar_hover": "#0A0A42",
      "email_sub_text": "#ffffff",
      "sidebar_accent": "#36367E",
      "sidebar_active": "#53DBB8",
      "email_background": "#0E0E56",
      "email_button_text": "#ffffff",
      "portal_background": "#f6f6f6",
      "portal_brand_title": "#323b4b",
      "sidebar_background": "#0E0E56",
      "portal_sidebar_icon": "#828994",
      "portal_sidebar_text": "#323b4b",
      "portal_account_email": "#828994",
      "portal_sidebar_title": "#11151d",
      "sidebar_title_primary": "#FFC634",
      "portal_brand_sub_title": "#828994",
      "portal_sidebar_divider": "#e3e5e9",
      "email_button_background": "#36367E",
      "portal_dashboard_bg_one": "#EF4583",
      "portal_dashboard_bg_two": "#FFC634",
      "sidebar_title_secondary": "#ffffff",
      "sidebar_title_background": "#36367E",
      "portal_sidebar_icon_hover": "#828994",
      "portal_sidebar_text_hover": "#323b4b",
      "portal_sidebar_icon_active": "#828994",
      "portal_sidebar_text_active": "#323b4b",
      "email_logo_background_panel": "#36367E",
      "portal_sidebar_button_hover": "#ffffff",
      "portal_sidebar_account_title": "#11151d",
      "portal_sidebar_button_active": "#ffffff",
      "sidebar_title_secondary_hover": "#ffffff",
      "portal_sidebar_button_background": "#f6f6f6"
    },
    "is_subscribed": true,
    "regulatory_text": "Regulatory text",
    "addon_subscriptions": "App\\Http\\Resources\\Addons\\AddonSubscriptionResource",
    "statement_frequency": "monthly",
    "task_board_template": "App\\Http\\Resources\\Board\\BoardResource",
    "keep_deleted_files_for": 30,
    "welcome_paragraph_html": "<h1>Welcome.</h1>",
    "email_welcome_paragraph_html": "Welcome to Plannr!",
    "show_fact_find_illustrations": true
  },
  "name": "Gareth Thompson",
  "role": "client",
  "tags": [
    {
      "name": "Mortgage",
      "slug": "mortgage",
      "uuid": "3ce1457c-7117-4373-b506-9177ccd1e31f",
      "colour": "#ef4582",
      "created_at": "2025-06-20T18:21:23+01:00",
      "updated_at": "2025-06-20T18:21:23+01:00"
    }
  ],
  "type": "client",
  "uuid": "068ea131-b943-482f-aa63-1197cf788d0d",
  "email": "gareth@codepotato.co.uk",
  "groups": [
    {
      "name": "finance",
      "slug": "finance",
      "uuid": "a5acf0db-3a5a-4977-b5f2-160024df735e",
      "created_at": "2025-06-20T18:21:23+01:00",
      "updated_at": "2025-06-20T18:21:23+01:00",
      "participants": {
        "name": {
          "example": "Gareth Thompson",
          "description": "Name of the account"
        },
        "role": {
          "example": "client",
          "description": "Role of the account"
        },
        "uuid": {
          "example": "1995fdea-4aab-4014-8ebf-95340eb58698",
          "description": "UUID of the account"
        },
        "email": {
          "example": "gareth@codepotato.co.uk",
          "description": "Email of the account"
        },
        "last_name": {
          "example": "Thompson",
          "description": "Last name of the account"
        },
        "first_name": {
          "example": "Gareth",
          "description": "First name of the account"
        }
      },
      "participants_count": "3"
    }
  ],
  "owners": [
    {
      "firm": "App\\Http\\Resources\\FirmResource",
      "name": "Gareth Thompson",
      "role": "client",
      "tags": "App\\Http\\Resources\\TagResource",
      "type": "client",
      "uuid": "33d4bf24-6606-4e8f-8c59-7ba6d2b1bc4f",
      "email": "gareth@codepotato.co.uk",
      "groups": "App\\Http\\Resources\\GroupResource",
      "owners": "App\\Http\\Resources\\AccountResource",
      "last_name": "Thompson",
      "created_at": "2025-06-20T18:21:23+01:00",
      "first_name": "Gareth",
      "updated_at": "2025-06-20T18:21:23+01:00",
      "with_login": true,
      "inactive_at": "2025-06-20",
      "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
      "introduced_by": "App\\Http\\Resources\\AccountResource",
      "primary_email": "App\\Http\\Resources\\ContactDetailResource",
      "can_be_deleted": "false",
      "assigned_adviser": "App\\Http\\Resources\\AccountResource",
      "next_review_date": "2025-06-20T18:21:23+01:00",
      "has_joint_account": true,
      "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
      "first_contact_date": "2025-06-20T18:21:23+01:00",
      "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
      "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
      "joint_account_circle": "App\\Http\\Resources\\CircleResource",
      "ownership_percentage": 100,
      "previous_review_date": "2025-06-20T18:21:23+01:00",
      "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
      "assigned_administrator": "App\\Http\\Resources\\AccountResource",
      "anniversary_review_date": "2025-06-20T18:21:23+01:00"
    }
  ],
  "last_name": "Thompson",
  "created_at": "2025-06-20T18:21:23+01:00",
  "first_name": "Gareth",
  "updated_at": "2025-06-20T18:21:23+01:00",
  "with_login": true,
  "inactive_at": "2025-06-20",
  "custom_fields": [
    {
      "name": "Favourite Drink",
      "type": "string",
      "uuid": "c08f9f38-f311-4bbd-a426-9cb32a395f2d",
      "value": "Coffee",
      "help_text": "This is the client's favourite drink.",
      "reference": "favourite_drink",
      "created_at": "2025-06-20T18:21:23+01:00",
      "updated_at": "2025-06-20T18:21:23+01:00",
      "is_required": false,
      "selection_options": [
        "Coffee",
        "Tea",
        "Water"
      ]
    }
  ],
  "introduced_by": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "be22ac41-b272-4661-b6e2-377d126b8cbd",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:23+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:23+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:23+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:23+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:23+01:00"
  },
  "primary_email": {
    "name": "Work number",
    "type": "phone_number",
    "uuid": "c7f66bde-8c87-4e0a-b8e6-d4232118e683",
    "value": "+443330903630",
    "accounts": "App\\Http\\Resources\\AccountResource",
    "created_at": "2025-06-20T18:21:23+01:00",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "phone_number_meta": {
      "country": "GB",
      "formatted": "0333 090 3630"
    }
  },
  "can_be_deleted": "false",
  "assigned_adviser": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "8eb2ef32-f25c-4020-9635-9d4886929793",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:23+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:23+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:23+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:23+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:23+01:00"
  },
  "next_review_date": "2025-06-20T18:21:23+01:00",
  "has_joint_account": true,
  "current_time_entry": {
    "name": "Research",
    "uuid": "17f855d6-bcbf-453d-b7ed-9e8598a311c5",
    "account": "App\\Http\\Resources\\MinimalAccountResource",
    "end_date": "2025-06-20T17:59:23+01:00",
    "is_active": true,
    "trackable": "App\\Http\\Resources\\MinimalAccountResource",
    "created_at": "2025-06-20T18:21:23+01:00",
    "start_date": "2025-06-20T17:31:23+01:00",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "description": "This is a description.",
    "trackable_type": "Client",
    "total_time_in_minutes": 28,
    "computed_time_elapsed_in_seconds": 1680
  },
  "first_contact_date": "2025-06-20T18:21:23+01:00",
  "external_references": [
    {
      "uuid": "c0772a81-20e9-42bd-ac25-32ee29e99c30",
      "reference": "AB123456",
      "created_at": "2025-06-20T18:21:23+01:00",
      "updated_at": "2025-06-20T18:21:23+01:00",
      "third_party": "nucleus"
    }
  ],
  "assigned_paraplanner": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "0d13f86b-0abe-46db-bb22-7533875eed93",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:23+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:23+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:23+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:23+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:23+01:00"
  },
  "joint_account_circle": {
    "name": "Jones Family",
    "uuid": "29187e7b-0657-4e69-890d-b62f746e524f",
    "groups": "App\\Http\\Resources\\GroupResource",
    "accounts": "App\\Http\\Resources\\MinimalAccountResource",
    "created_at": "2025-06-20T18:21:23+01:00",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "joint_account_uuid": "c28dfbf2-d5dc-4bac-8fcf-332d6419bd72"
  },
  "ownership_percentage": 100,
  "previous_review_date": "2025-06-20T18:21:23+01:00",
  "primary_phone_number": {
    "name": "Work number",
    "type": "phone_number",
    "uuid": "fcfc5861-17cf-488b-b559-280952c25caa",
    "value": "+443330903630",
    "accounts": "App\\Http\\Resources\\AccountResource",
    "created_at": "2025-06-20T18:21:23+01:00",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "phone_number_meta": {
      "country": "GB",
      "formatted": "0333 090 3630"
    }
  },
  "assigned_administrator": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "be835c15-cec4-481b-beac-32699e6667a8",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:23+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:23+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:23+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:23+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:23+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:23+01:00"
  },
  "anniversary_review_date": "2025-06-20T18:21:23+01:00"
}















































































GET /api/v1/addons/be-iq/client/{client_uuid}
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/addons/be-iq/client/client_uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json"

































































































Create or Update an Expenditure

POST /api/v1/client/{client_uuid}/expenditure/{lifeStage_uuid}/{lifeStageField_uuid}

This endpoint creates an individual expenditure for a client.

Headers

Path parameters

application/json

Body Required

Responses

POST /api/v1/client/{client_uuid}/expenditure/{lifeStage_uuid}/{lifeStageField_uuid}
curl \
 --request POST 'https://api.plannrcrm.com/api/v1/client/f6aa1670-dcf0-484e-a0c5-08590fe89a84/expenditure/dcf0-484e-a0c5-08590fe89a84-f6aa1670/dcf0-484e-a0c5-08590fe89a84-f6aa1670' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"amount":50000,"life_stage_section_uuid":"6da99e39-40ae-4059-88d3-e45d9f04c368"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "amount": 50000,
  "life_stage_section_uuid": "6da99e39-40ae-4059-88d3-e45d9f04c368"
}
Response examples (200)
{
  "name": "Electricity",
  "uuid": "11e4bd72-de07-4fe7-9c52-5bda65fff414",
  "amount": {
    "amount": {
      "example": "4000",
      "description": "Money amount at their lowest denominator (for example: pennies)"
    },
    "currency": {
      "example": "GBP",
      "description": "Currency of the money"
    },
    "formatted": {
      "example": "£40.00",
      "description": "Money amount formatted with currency"
    }
  },
  "section": "Housekeeping Expenses",
  "position": "1",
  "created_at": "2025-06-20T18:21:23+01:00",
  "updated_at": "2025-06-20T18:21:23+01:00",
  "life_stage_uuid": "2ee279af-c255-4a90-b84b-d5acd1b25e95",
  "life_stage_field_uuid": "c0ab2241-dd44-4dde-8001-ca4735878231",
  "life_stage_section_uuid": "85b70a36-b29e-4805-ab88-4a1b29244bde"
}






































Get a fact-find schema

GET /api/v1/fact-find/schema/{factFindSchema_uuid}

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • If the schema has been archived, the datetime of when it was archived.

    • Denotes if the schema has been archived.

    • name string

      The name of the fact-find schema.

    • The name of the fact-find schema. Must be unique.

    • The number of sections inside of a fact-find schema.

    • The public URL of the fact-find schema.

GET /api/v1/fact-find/schema/{factFindSchema_uuid}
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/fact-find/schema/factFindSchema_uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "name": "Default fact-find",
  "uuid": "65958286-eb5d-42e7-b969-14737e119eef",
  "created_at": "2025-06-20T18:21:27+01:00",
  "public_url": "https://plannr.valet/fact-find/fa550a4a-3b86-4535-8e61-423e68260d6f",
  "updated_at": "2025-06-20T18:21:27+01:00",
  "archived_at": "2025-06-19T18:21:27+01:00",
  "is_archived": false,
  "sections_count": 5,
  "introduction_html": "Welcome to our fact-find! <b>You can use some HTML too.</b>"
}

Update a fact-find schema

PUT /api/v1/fact-find/schema/{factFindSchema_uuid}
application/json

Body

  • name string

    The name of the fact-find schema. Must be unique.

  • The name of the fact-find schema. Must be unique.

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • If the schema has been archived, the datetime of when it was archived.

    • Denotes if the schema has been archived.

    • name string

      The name of the fact-find schema.

    • The name of the fact-find schema. Must be unique.

    • The number of sections inside of a fact-find schema.

    • The public URL of the fact-find schema.

PUT /api/v1/fact-find/schema/{factFindSchema_uuid}
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/fact-find/schema/factFindSchema_uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"name":"Mortgage Client Fact-Find","introduction_html":"Welcome to our fact-find! \u003cb\u003eYou can use some HTML too.\u003c/b\u003e"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "name": "Mortgage Client Fact-Find",
  "introduction_html": "Welcome to our fact-find! <b>You can use some HTML too.</b>"
}
Response examples (200)
{
  "name": "Default fact-find",
  "uuid": "f67f1899-9d7c-4341-ac23-1713a55aca0e",
  "created_at": "2025-06-20T18:21:27+01:00",
  "public_url": "https://plannr.valet/fact-find/e995b847-4bba-4df4-bb46-ef5a6e3a1442",
  "updated_at": "2025-06-20T18:21:27+01:00",
  "archived_at": "2025-06-19T18:21:27+01:00",
  "is_archived": false,
  "sections_count": 5,
  "introduction_html": "Welcome to our fact-find! <b>You can use some HTML too.</b>"
}










































































































































































Copy a file

PUT /api/v1/file/{file_uuid}/copy

Copy a file to the current directory or to the given folder.

application/json

Body

  • folder string

    Copy file to this folder.

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • uuid string

      UUID of the file

    • The timestamp of when the resource was created.

    • Timestamp of when the file was originally created

    • The timestamp of when the resource was updated.

    • Timestamp of when the file was uploaded

    • status string

      Current status of the uploading progress

    • filename string

      The filename including extension

    • name string

      The name of the file without extension

    • The extension of the file

    • type string

      The MIME type of the file

    • size string

      The size of the file in bytes

    • path string

      The path of the file

    • Timestamp of when the file was last modified before uploading

    • progress string

      The progress of the uploaded file as a percentage between 0 and 100

    • The download URL of the file

    • The name of the folder the file is located in

    • folder object

      The folder this file is located in

    • The documentable type such as account/plan/case/etc the file was uploaded to

    • The documentable the file was uploaded to

    • The documentable type and its UUID in order to navigator to the correct resource

    • firm object

      The firm which the file belongs to

    • account object

      The account that uploaded the file (if specified)

    • tags array[object]

      The tags added to the file (if provided)

PUT /api/v1/file/{file_uuid}/copy
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/file/file_uuid/copy' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"folder":"string"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "folder": "string"
}
Response examples (200)
{
  "firm": {
    "tax": 17.5,
    "logo": "https://api.plannrcrm.com/images/plannr.jpg",
    "name": "Codepotato",
    "slug": "codepotato",
    "uuid": "a2faf148-0561-416f-abd7-27524055bc90",
    "county": "Hampshire",
    "billing": {
      "invoice_email": "gareth@codepotato.co.uk",
      "invoice_county": "Hampshire",
      "invoice_country": "United Kingdom",
      "invoice_postcode": "PO7 7YH",
      "invoice_address_1": "Suite E, 5 The Briars",
      "invoice_address_2": "Waterberry Drive",
      "invoice_town_city": "Waterlooville"
    },
    "country": "United Kingdom",
    "postcode": "PO7 7YH",
    "address_1": "Suite E, 5 The Briars",
    "address_2": "Waterberry Drive",
    "logo_icon": "https://api.plannrcrm.com/images/plannr-icon.jpg",
    "month_end": 25,
    "town_city": "Waterlooville",
    "created_at": "2025-06-20T18:21:25+01:00",
    "updated_at": "2025-06-20T18:21:25+01:00",
    "ip_whitelist": [
      "192.168.0.1",
      "127.0.0.1"
    ],
    "brand_colours": {
      "sidebar_text": "#ffffff",
      "sidebar_hover": "#0A0A42",
      "email_sub_text": "#ffffff",
      "sidebar_accent": "#36367E",
      "sidebar_active": "#53DBB8",
      "email_background": "#0E0E56",
      "email_button_text": "#ffffff",
      "portal_background": "#f6f6f6",
      "portal_brand_title": "#323b4b",
      "sidebar_background": "#0E0E56",
      "portal_sidebar_icon": "#828994",
      "portal_sidebar_text": "#323b4b",
      "portal_account_email": "#828994",
      "portal_sidebar_title": "#11151d",
      "sidebar_title_primary": "#FFC634",
      "portal_brand_sub_title": "#828994",
      "portal_sidebar_divider": "#e3e5e9",
      "email_button_background": "#36367E",
      "portal_dashboard_bg_one": "#EF4583",
      "portal_dashboard_bg_two": "#FFC634",
      "sidebar_title_secondary": "#ffffff",
      "sidebar_title_background": "#36367E",
      "portal_sidebar_icon_hover": "#828994",
      "portal_sidebar_text_hover": "#323b4b",
      "portal_sidebar_icon_active": "#828994",
      "portal_sidebar_text_active": "#323b4b",
      "email_logo_background_panel": "#36367E",
      "portal_sidebar_button_hover": "#ffffff",
      "portal_sidebar_account_title": "#11151d",
      "portal_sidebar_button_active": "#ffffff",
      "sidebar_title_secondary_hover": "#ffffff",
      "portal_sidebar_button_background": "#f6f6f6"
    },
    "is_subscribed": true,
    "regulatory_text": "Regulatory text",
    "addon_subscriptions": "App\\Http\\Resources\\Addons\\AddonSubscriptionResource",
    "statement_frequency": "monthly",
    "task_board_template": "App\\Http\\Resources\\Board\\BoardResource",
    "keep_deleted_files_for": 30,
    "welcome_paragraph_html": "<h1>Welcome.</h1>",
    "email_welcome_paragraph_html": "Welcome to Plannr!",
    "show_fact_find_illustrations": true
  },
  "name": "Welcome to Plannr",
  "path": "Gareth Thompson/Subfolder/Welcome to Plannr.pdf",
  "size": "21691783",
  "tags": [
    {
      "name": "Mortgage",
      "slug": "mortgage",
      "uuid": "6b14cfea-5ef2-4665-8f24-072b8da1e3f2",
      "colour": "#ef4582",
      "created_at": "2025-06-20T18:21:25+01:00",
      "updated_at": "2025-06-20T18:21:25+01:00"
    }
  ],
  "type": "type",
  "uuid": "6af4b933-3dbd-480d-9662-15aebab45589",
  "folder": {
    "name": "Important Documents",
    "path": "Codepotato/Important Documents",
    "slug": "important-documents",
    "uuid": "d8b3d973-c1ff-49e1-a0ac-659a23aa3f9a",
    "depth": 5,
    "files": "App\\Http\\Resources\\FileResource",
    "owned": false,
    "folders": "App\\Http\\Resources\\FolderResource",
    "parents": "App\\Http\\Resources\\FolderResource",
    "children": "App\\Http\\Resources\\FolderResource",
    "ancestors": "App\\Http\\Resources\\FolderResource",
    "created_at": "2025-06-20T18:21:25+01:00",
    "updated_at": "2025-06-20T18:21:25+01:00",
    "files_count": 8,
    "clients_read": true,
    "documentable": "Object",
    "participants": "App\\Http\\Resources\\FolderParticipantResource",
    "clients_write": true,
    "folders_count": 5,
    "is_root_folder": true,
    "is_pseudo_folder": true,
    "is_system_folder": true,
    "documentable_type": "account",
    "documentable_uuid": "account",
    "participants_count": 3,
    "show_client_permissions": true
  },
  "status": "uploaded",
  "account": {
    "name": "Gareth Thompson",
    "role": "client",
    "type": "client",
    "uuid": "7f8ee711-1e72-48d8-9a28-e75f7d2318a5",
    "email": "gareth@codepotato.co.uk",
    "last_name": "Thompson",
    "photo_url": "https://eu.ui-avatars.com/api/?name=Gareth+Thompson",
    "created_at": "2025-06-20T18:21:25+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:25+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource"
  },
  "filename": "Welcome to Plannr.pdf",
  "progress": "100",
  "extension": "pdf",
  "navigator": {
    "model_type": "account",
    "model_uuid": "41eab1eb-8d3f-4f80-a867-55dbb12bbb05"
  },
  "created_at": "2025-06-20T18:21:25+01:00",
  "updated_at": "2025-06-20T18:21:25+01:00",
  "folder_name": "folder 2",
  "uploaded_at": "2025-06-20T18:21:25+01:00",
  "documentable": "Object",
  "download_url": "https://plannr.valet/file/7171adb5-d901-4ded-aeb6-aa1afd6eef38/download",
  "last_modified": "2025-06-20T18:21:25+01:00",
  "documentable_type": "account",
  "original_created_at": "2025-06-20T18:21:25+01:00"
}
















































































































































































































Headers

application/json

Body Required

  • account_uuids array[string] Required

    The UUIDs of the accounts who should own the goal. These must only be client accounts.

  • name string Required

    The goal's name.

  • description string Required

    The goal's description.

  • target_amount integer Required

    The goal's target amount.

  • progress integer

    The goal's progress as a percentage.

  • The goal's timeframe.

  • The goal's deadline as a specific date.

  • priority integer

    The goal's priority on a scale from 1 to 5.

Responses

  • 201 application/json
    Hide response attributes Show response attributes object
    • uuid string

      The UUID of the resource.

    • The timestamp of when the resource was created.

    • The timestamp of when the resource was updated.

    • name string

      The goal's name.

    • The goal's description.

    • The goal's target amount.

    • progress string

      The goal's progress as a percentage.

    • The goal's timeframe.

    • The goal's deadline as a specific date.

    • priority string

      The goal's priority on a scale from 1 to 5.

    • Denotes if the goal is shared across the client or belongs to one of the owners of the client. (Only applicable for joint/business/trust clients)

    • The owner of the goal. Only provided if the shared_owner_type is "individual".

POST /api/v2/goals
curl \
 --request POST 'https://api.plannrcrm.com/api/v2/goals' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"account_uuids":["2ac88ede-d0cf-4c55-a05f-6096e675aad0","3727f6ee-4e97-4981-9105-43ad5a18591d"],"name":"Reduced Mileage","description":"Reduce the amount of gas spent yearly.","target_amount":5000,"progress":68,"timeframe":"Within the year.","complete_goal_by":"2026-06-20T18:21:29+01:00","priority":4}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "account_uuids": [
    "2ac88ede-d0cf-4c55-a05f-6096e675aad0",
    "3727f6ee-4e97-4981-9105-43ad5a18591d"
  ],
  "name": "Reduced Mileage",
  "description": "Reduce the amount of gas spent yearly.",
  "target_amount": 5000,
  "progress": 68,
  "timeframe": "Within the year.",
  "complete_goal_by": "2026-06-20T18:21:29+01:00",
  "priority": 4
}
Response examples (201)
{
  "name": "Reduced Mileage",
  "uuid": "5a32dc72-23b3-43f6-91d1-bb58ccf8490f",
  "priority": "4",
  "progress": "68",
  "timeframe": "Within the year.",
  "created_at": "2025-06-20T18:21:29+01:00",
  "updated_at": "2025-06-20T18:21:29+01:00",
  "description": "Reduce the amount of gas spent yearly.",
  "shared_owner": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "363cf80a-61c7-40e7-827f-82ec48d08068",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:29+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:29+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:29+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:29+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:29+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:29+01:00"
  },
  "target_amount": {
    "amount": {
      "example": "4000",
      "description": "Money amount at their lowest denominator (for example: pennies)"
    },
    "currency": {
      "example": "GBP",
      "description": "Currency of the money"
    },
    "formatted": {
      "example": "£40.00",
      "description": "Money amount formatted with currency"
    }
  },
  "complete_goal_by": "2026-06-20T18:21:29+01:00",
  "shared_owner_type": "individual"
}

























Path parameters

Responses

GET /api/v1/group/{uuid}
curl \
 --request GET 'https://api.plannrcrm.com/api/v1/group/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}"
Response examples (200)
{
  "name": "finance",
  "slug": "finance",
  "uuid": "06756b7c-3755-4af9-ab91-e7cdbb50f657",
  "created_at": "2025-06-20T18:21:24+01:00",
  "updated_at": "2025-06-20T18:21:24+01:00",
  "participants": {
    "name": {
      "example": "Gareth Thompson",
      "description": "Name of the account"
    },
    "role": {
      "example": "client",
      "description": "Role of the account"
    },
    "uuid": {
      "example": "0e33af02-8f2d-449b-b900-7d3c95be8ef5",
      "description": "UUID of the account"
    },
    "email": {
      "example": "gareth@codepotato.co.uk",
      "description": "Email of the account"
    },
    "last_name": {
      "example": "Thompson",
      "description": "Last name of the account"
    },
    "first_name": {
      "example": "Gareth",
      "description": "First name of the account"
    }
  },
  "participants_count": "3"
}

Path parameters

application/json

Body Required

  • name string Required

    Group name that must be unique.

Responses

PUT /api/v1/group/{uuid}
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/group/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
 --data '{"name":"Accounting"}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}

# Payload
{
  "name": "Accounting"
}
Response examples (200)
{
  "name": "finance",
  "slug": "finance",
  "uuid": "24ed01bd-ee72-4aaf-899e-f32b364a1ef6",
  "created_at": "2025-06-20T18:21:24+01:00",
  "updated_at": "2025-06-20T18:21:24+01:00",
  "participants": {
    "name": {
      "example": "Gareth Thompson",
      "description": "Name of the account"
    },
    "role": {
      "example": "client",
      "description": "Role of the account"
    },
    "uuid": {
      "example": "ec0bbefe-5601-4b03-8e6f-28bd0b8d645b",
      "description": "UUID of the account"
    },
    "email": {
      "example": "gareth@codepotato.co.uk",
      "description": "Email of the account"
    },
    "last_name": {
      "example": "Thompson",
      "description": "Last name of the account"
    },
    "first_name": {
      "example": "Gareth",
      "description": "First name of the account"
    }
  },
  "participants_count": "3"
}

































Sync Holdings on a Sub Account

POST /api/v1/plans/{plan_uuid}/sub-accounts/{subAccount_uuid}/sync-holdings

Headers

Path parameters

application/json

Body Required

  • holdings array[string] Required

    Holdings array to sync. all other holdings on this sub account will be marked as inactive

  • Optional name of the portfolio when the holdings are synced

  • Denotes if the portfolio that is created should be proposed or not.

Responses

POST /api/v1/plans/{plan_uuid}/sub-accounts/{subAccount_uuid}/sync-holdings
curl \
 --request POST 'https://api.plannrcrm.com/api/v1/plans/plan_uuid/sub-accounts/subAccount_uuid/sync-holdings' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"holdings":[{"citi":"ABC12345","isin":"ABC12345","sedol":"ABC12345","units":100,"sector":"Europe","provider":"Transact","fund_name":"Cash","is_active":true,"reference":"C4$4","unit_price":1,"purchase_price":1}],"portfolio_name":"Proposed Holdings 2023","is_proposed_portfolio":true}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "holdings": [
    {
      "citi": "ABC12345",
      "isin": "ABC12345",
      "sedol": "ABC12345",
      "units": 100,
      "sector": "Europe",
      "provider": "Transact",
      "fund_name": "Cash",
      "is_active": true,
      "reference": "C4$4",
      "unit_price": 1,
      "purchase_price": 1
    }
  ],
  "portfolio_name": "Proposed Holdings 2023",
  "is_proposed_portfolio": true
}
Response examples (202)
{}































































































































































































































































































































































































Update a login

PUT /api/v1/account/{account_uuid}/login/{uuid}

Path parameters

  • account_uuid integer Required
  • uuid integer Required
  • account string Required

    The uuid of the account which the login belongs to.

  • login string Required

    The uuid of the login to display.

application/json

Body Required

  • Timestamp of how long this login is valid for temporary access. Can leave blank for no expiration.

  • primary string

    Make this the primary login for this account. Only one primary login per account.

  • has_write_permission boolean Required

    Give this login write access for the account. False to leave as read only.

  • has_delete_permission string Required

    Give this access to delete items. False to prevent logins from deleting resources.

  • wealth_enabled boolean Required

    Set to true this login be able to access wealth on the client portal.

  • goals_enabled boolean Required

    Set to true for this login to be able to access goals on the client portal.

  • factfind_enabled boolean Required

    Set to true for this login to be able to access fact-finds on the client portal.

  • tasks_enabled boolean Required

    Set to true for this login to be able to access tasks on the client portal.

  • Set to true this login should receive the unread notification digest email

Responses

PUT /api/v1/account/{account_uuid}/login/{uuid}
curl \
 --request PUT 'https://api.plannrcrm.com/api/v1/account/account_uuid/login/uuid' \
 --header "Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}" \
 --header "Content-Type: application/json" \
 --header "Accept: application/json" \
 --data '{"expires_at":"2025-06-23T18:21:22+01:00","primary":true,"has_write_permission":true,"has_delete_permission":"1","wealth_enabled":true,"goals_enabled":true,"factfind_enabled":true,"tasks_enabled":true,"receives_unread_notifications_email":true}'
Request examples
# Headers
Authorization: Bearer {OAUTH_ACCESS_TOKEN or PERSONAL_ACCESS_TOKEN}
Content-Type: application/json
Accept: application/json

# Payload
{
  "expires_at": "2025-06-23T18:21:22+01:00",
  "primary": true,
  "has_write_permission": true,
  "has_delete_permission": "1",
  "wealth_enabled": true,
  "goals_enabled": true,
  "factfind_enabled": true,
  "tasks_enabled": true,
  "receives_unread_notifications_email": true
}
Response examples (200)
{
  "firm": {
    "tax": 17.5,
    "logo": "https://api.plannrcrm.com/images/plannr.jpg",
    "name": "Codepotato",
    "slug": "codepotato",
    "uuid": "7875cb51-673b-4d01-8901-71fb0283a91e",
    "county": "Hampshire",
    "billing": {
      "invoice_email": "gareth@codepotato.co.uk",
      "invoice_county": "Hampshire",
      "invoice_country": "United Kingdom",
      "invoice_postcode": "PO7 7YH",
      "invoice_address_1": "Suite E, 5 The Briars",
      "invoice_address_2": "Waterberry Drive",
      "invoice_town_city": "Waterlooville"
    },
    "country": "United Kingdom",
    "postcode": "PO7 7YH",
    "address_1": "Suite E, 5 The Briars",
    "address_2": "Waterberry Drive",
    "logo_icon": "https://api.plannrcrm.com/images/plannr-icon.jpg",
    "month_end": 25,
    "town_city": "Waterlooville",
    "created_at": "2025-06-20T18:21:22+01:00",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "ip_whitelist": [
      "192.168.0.1",
      "127.0.0.1"
    ],
    "brand_colours": {
      "sidebar_text": "#ffffff",
      "sidebar_hover": "#0A0A42",
      "email_sub_text": "#ffffff",
      "sidebar_accent": "#36367E",
      "sidebar_active": "#53DBB8",
      "email_background": "#0E0E56",
      "email_button_text": "#ffffff",
      "portal_background": "#f6f6f6",
      "portal_brand_title": "#323b4b",
      "sidebar_background": "#0E0E56",
      "portal_sidebar_icon": "#828994",
      "portal_sidebar_text": "#323b4b",
      "portal_account_email": "#828994",
      "portal_sidebar_title": "#11151d",
      "sidebar_title_primary": "#FFC634",
      "portal_brand_sub_title": "#828994",
      "portal_sidebar_divider": "#e3e5e9",
      "email_button_background": "#36367E",
      "portal_dashboard_bg_one": "#EF4583",
      "portal_dashboard_bg_two": "#FFC634",
      "sidebar_title_secondary": "#ffffff",
      "sidebar_title_background": "#36367E",
      "portal_sidebar_icon_hover": "#828994",
      "portal_sidebar_text_hover": "#323b4b",
      "portal_sidebar_icon_active": "#828994",
      "portal_sidebar_text_active": "#323b4b",
      "email_logo_background_panel": "#36367E",
      "portal_sidebar_button_hover": "#ffffff",
      "portal_sidebar_account_title": "#11151d",
      "portal_sidebar_button_active": "#ffffff",
      "sidebar_title_secondary_hover": "#ffffff",
      "portal_sidebar_button_background": "#f6f6f6"
    },
    "is_subscribed": true,
    "regulatory_text": "Regulatory text",
    "addon_subscriptions": "App\\Http\\Resources\\Addons\\AddonSubscriptionResource",
    "statement_frequency": "monthly",
    "task_board_template": "App\\Http\\Resources\\Board\\BoardResource",
    "keep_deleted_files_for": 30,
    "welcome_paragraph_html": "<h1>Welcome.</h1>",
    "email_welcome_paragraph_html": "Welcome to Plannr!",
    "show_fact_find_illustrations": true
  },
  "uuid": "1b868583-496b-444b-8b9b-271691832f8d",
  "email": "gareth@plannrcrm.com",
  "account": {
    "firm": "App\\Http\\Resources\\FirmResource",
    "name": "Gareth Thompson",
    "role": "client",
    "tags": "App\\Http\\Resources\\TagResource",
    "type": "client",
    "uuid": "b0776e26-6b4e-4141-89e4-c8cc2a9b3e18",
    "email": "gareth@codepotato.co.uk",
    "groups": "App\\Http\\Resources\\GroupResource",
    "owners": "App\\Http\\Resources\\AccountResource",
    "last_name": "Thompson",
    "created_at": "2025-06-20T18:21:22+01:00",
    "first_name": "Gareth",
    "updated_at": "2025-06-20T18:21:22+01:00",
    "with_login": true,
    "inactive_at": "2025-06-20",
    "custom_fields": "App\\Http\\Resources\\CustomFieldValueResource",
    "introduced_by": "App\\Http\\Resources\\AccountResource",
    "primary_email": "App\\Http\\Resources\\ContactDetailResource",
    "can_be_deleted": "false",
    "assigned_adviser": "App\\Http\\Resources\\AccountResource",
    "next_review_date": "2025-06-20T18:21:22+01:00",
    "has_joint_account": true,
    "current_time_entry": "App\\Http\\Resources\\TimeEntryResource",
    "first_contact_date": "2025-06-20T18:21:22+01:00",
    "external_references": "App\\Http\\Resources\\ExternalReferenceResource",
    "assigned_paraplanner": "App\\Http\\Resources\\AccountResource",
    "joint_account_circle": "App\\Http\\Resources\\CircleResource",
    "ownership_percentage": 100,
    "previous_review_date": "2025-06-20T18:21:22+01:00",
    "primary_phone_number": "App\\Http\\Resources\\ContactDetailResource",
    "assigned_administrator": "App\\Http\\Resources\\AccountResource",
    "anniversary_review_date": "2025-06-20T18:21:22+01:00"
  },
  "primary": false,
  "last_name": "Thompson",
  "created_at": "2025-06-20T18:21:22+01:00",
  "expires_at": "2025-09-28T18:21:22+01:00",
  "first_name": "Gareth",
  "updated_at": "2025-06-20T18:21:22+01:00",
  "goals_enabled": true,
  "tasks_enabled": true,
  "wealth_enabled": true,
  "is_impersonated": false,
  "welcome_enabled": true,
  "factfind_enabled": true,
  "has_write_permission": false,
  "has_delete_permission": false,
  "receives_unread_notifications_email": true
}