> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NINJIO integration setup

> Connect NINJIO to the Living Security Platform to import security awareness training results and phishing simulation outcomes for your workforce.

export const PublicIntegrationNextSteps = () => <>
    <hr />
    <h2>Related resources</h2>
    <ul>
      <li>
        <a href="/signals/data-sources">Learn how integration data becomes Human Risk Management signals</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/integrations">Explore Living Security integrations</a>
      </li>
      <li>
        <a href="https://app.livingsecurity.ai/">Open the Living Security Platform</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/request-demo/">Request a Living Security demo</a>
      </li>
    </ul>
  </>;

export const ConnectInPlatform = ({tile, children}) => <Step title="Enter the credentials in the Living Security Platform">
    <p>
      Completed by whoever holds Living Security access — the program owner, or the system
      admin if they've been invited (delegated setup).
    </p>
    <ol>
      <li>
        Go to <strong>Settings → Integrations → Catalog</strong>, find the{' '}
        <strong>{tile}</strong> tile, click <strong>Connect</strong>.
      </li>
      <li>
        Fill in the fields below, then click <strong>Connect</strong>.
      </li>
    </ol>
    {children}
  </Step>;

export const SystemAdminBanner = ({system, recommendDelegated}) => <Note>
    <p>
      <strong>This guide is for your {system} administrator.</strong> It covers creating API
      credentials inside {system}, which requires admin access to {system} — not to the
      Living Security Platform.
    </p>
    <p>
      If you're the Living Security <strong>program owner</strong> and don't administer {system},
      send this page to whoever does. They complete Part A and hand the credentials back to you
      (or enter them directly if you've invited them into the platform).
      {recommendDelegated && <>
          {' '}Because setup produces sensitive key material, we recommend the{' '}
          <strong>delegated setup</strong> path so the secret is never sent back to you.
        </>}
    </p>
  </Note>;

<SystemAdminBanner system="NINJIO" />

## What this integration contributes

NINJIO can contribute workforce, training, and phishing-simulation outcomes. Reviewed examples include:

* `training.assigned` — has assigned security training
* `training.completed` — completes security training
* `training.passed` — passes security training assessments
* `phishing.simulation.clicked` — clicked a simulation without reporting
* `phishing.simulation.reported` — reports phishing simulations

These examples show the types of normalized activity Living Security can use. See [how integration data becomes signals](/signals/data-sources).

## What Living Security needs

| Credential  | Description                                                                                                                        |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **API key** | A NINJIO API key with read access to the employee, training and phishing access points. Living Security sends it on every request. |

**Scopes:** NINJIO scopes each API key per *access point*, with separate read and write permissions. Living Security needs **read** on three: employees, training and phishing. Write access is not needed and should not be granted.

**Required role:** An **Administrator** on your NINJIO account. Only administrators can reach the Integration area where keys are created.

<Warning>
  **NINJIO shows a new key once only, at the moment it is created.** Copy it straight into the Living Security Platform, or into a password vault, before you navigate away. A key you did not copy cannot be retrieved — you have to generate a replacement.
</Warning>

### What Living Security retrieves

| Data         | Detail                                                                                                          |
| ------------ | --------------------------------------------------------------------------------------------------------------- |
| **Learners** | Your NINJIO employee directory: name, email, department, job title, manager, country, branch and active status. |
| **Training** | Who was assigned each training, and who completed it — with completion date, exam score and engagement score.   |
| **Phishing** | Who interacted with a simulated phishing email, and who reported it, with the time it happened.                 |

<Note>
  **Learner phone numbers are not stored.** NINJIO returns a phone number on its employee record. Living Security discards it before storing anything, because no Living Security feature uses it.
</Note>

### Prerequisites

* A NINJIO account with API access.
* Administrator access to [admin.goninjio.com](https://admin.goninjio.com/).
* Learner email addresses in NINJIO that match the addresses your other connected systems use. Email is how Living Security matches a NINJIO learner to a person.

***

## Part A — In NINJIO

*Your NINJIO administrator completes these steps.*

<Steps>
  <Step title="Open the Integration area">
    1. Sign in to [admin.goninjio.com](https://admin.goninjio.com/) as an administrator.
    2. Select **Integration** at the top right of the screen.
  </Step>

  <Step title="Create the API key">
    1. Select **New API Key**.
    2. Give the key a name you will recognise later — for example `Living Security`.
    3. Grant **read** access to the **employee**, **training** and **phishing** access points.
    4. Leave write access unselected. Living Security only reads from NINJIO.
    5. Select **Generate Key**.

    <Warning>
      Copy the key now. NINJIO displays it once and cannot show it again.
    </Warning>
  </Step>
</Steps>

***

## Part B — In the Living Security Platform

*The program owner completes this step, or the system admin if using delegated setup.*

<Steps>
  <ConnectInPlatform tile="NINJIO">
    | Field       | Value                           |
    | ----------- | ------------------------------- |
    | **API key** | The key you generated in Part A |
  </ConnectInPlatform>
</Steps>

You are now connected to NINJIO.

***

## How often data is retrieved

| Data             | Schedule      |
| ---------------- | ------------- |
| Learners         | Daily         |
| Training results | Every 6 hours |
| Phishing results | Every 6 hours |

On first connection, Living Security retrieves the past 12 months of training completions, then keeps up incrementally. Phishing simulations are read once each and re-checked for two weeks after they end, so late clicks and late reports are still captured.

<Note>
  A first connection on a large NINJIO account can take several scheduled runs to finish reading everything. Each run reads as much as it can and the next one continues from where it stopped, so counts climb over the first day or two rather than appearing all at once.
</Note>

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    The API key is wrong or incomplete. The most common cause is a key that was partially copied — NINJIO shows it once, so a truncated paste is easy to do and impossible to spot afterwards. Generate a new key in NINJIO and reconnect with it.
  </Accordion>

  <Accordion title="403 Forbidden">
    This is **not** a credential problem. The key authenticated, but one of the access points it needs was not granted read permission.

    Re-pasting the same key will not help. In NINJIO, create a key with **read** access to all three access points — employee, training and phishing — and reconnect with that one.
  </Accordion>

  <Accordion title="Connected successfully but no training data">
    Check in NINJIO that at least one training campaign is **active** and has a simulation attached. A campaign with no simulation stays inactive and delivers nothing, so there are no results to retrieve.

    If campaigns are active, confirm the learners in them have email addresses on their NINJIO records. A learner with no email address cannot be matched to a person and is skipped.
  </Accordion>

  <Accordion title="Training shows as assigned but never completed">
    That is the expected display for training a learner has not finished. Living Security records the assignment when the NINJIO simulation starts, and records the completion separately when NINJIO reports a completion date.
  </Accordion>

  <Accordion title="Some learners are missing">
    Living Security matches a NINJIO learner to a person by **email address**. A learner whose NINJIO email differs from the address your directory holds — a personal address, an old domain, or a typo — will not match.

    Correct the address in NINJIO and it will match on the next scheduled retrieval.
  </Accordion>

  <Accordion title="Phishing results are missing for an older simulation">
    Living Security re-checks a phishing simulation for two weeks after it ends, then stops. Results that NINJIO records after that window are not picked up. Contact support if you need an older simulation re-read.
  </Accordion>
</AccordionGroup>

<PublicIntegrationNextSteps />
