---
title: "Analyzes a .wa file and returns what is needed to import the story into the current tenant."
method: POST
path: "/api/stories/import/analyze"
tags: ["StoryImports"]
---

# Analyzes a .wa file and returns what is needed to import the story into the current tenant.

`POST /api/stories/import/analyze`

## Request

- Base URL: `https://api.wearelearning.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.wearelearning.io/api/stories/import/analyze`
- Auth: OAuth 2
  - Implicit: `https://login.wearelearning.io/authorize?audience=https://api.wearelearning.io`

## Request body `multipart/form-data`

- object
  - `waFile` string, binary: The .wa file produced by the export endpoint.

## Response `200`

OK

- StoryImportAnalysisDto
  - `importToken` string, nullable
  - `summary` StoryImportSummaryDto, required
    - `snapshotId` string, required
    - `storyTitle` string, required
    - `sourceSimulationId` string, required
    - `exportedAt` string, date-time, required
    - `nodeCount` integer, required
  - `compatibility` ImportCompatibilityDto, required
    - `canImport` boolean, required
    - `blockingReasons` string[], required
  - `characters` CharacterAnalysisDto, required
    - `autoMapped` CharacterMappingDto[], required
      - `sourceCharacterId` string, required
      - `name` string, required
      - `gender` 'Female' | 'Male'
      - `nodeCount` integer, required
      - `iconUrl` string, nullable
      - `targetCharacterId` string, required
      - `isAutoMatched` boolean, required
    - `requiresMapping` CharacterRequiresMappingDto[], required
      - `sourceCharacterId` string, required
      - `name` string, required
      - `gender` 'Female' | 'Male'
      - `nodeCount` integer, required
      - `iconUrl` string, nullable
      - `suggestions` SuggestedCharacterDto[], required
        - `characterId` string, required
        - `name` string, required
        - `gender` 'Female' | 'Male', required
    - `slotsRequired` integer, required
    - `slotsRequiredWorstCase` integer, required
    - `slotsAvailable` integer, required
    - `hasSufficientSlots` boolean, required
  - `theme` ThemeAnalysisDto, required
    - `themeId` string, nullable
    - `isAvailableInTargetTenant` boolean, required
    - `nodeOverrides` NodeThemeOverrideAnalysisDto[], required
      - `nodeId` string, required
      - `themeId` string, required
      - `isAvailableInTargetTenant` boolean, required
  - `scene` SceneAnalysisDto, required
    - `sceneId` string, nullable
    - `isAvailableInTargetTenant` boolean, required
    - `nodeScenes` NodeSceneAnalysisDto[], required
      - `nodeId` string, required
      - `sceneId` string, required
      - `isAvailableInTargetTenant` boolean, required
  - `language` LanguageAnalysisDto, required
    - `sourceLanguageCode` string, required
    - `mode` 'KeepSource' | 'ChooseTarget' | 'MustChooseOrActivate' | 'MustTranslate' | 'Blocked', required
    - `availableTargetLanguageCodes` string[], required
    - `canActivateSourceLanguage` boolean, required
    - `languageSlotsAvailable` integer, required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Content

---

[API](https://skmtc.dev/wearelearning/apis/we-are-learning-api.md) - [All operations](https://skmtc.dev/wearelearning/apis/we-are-learning-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wearelearning/apis/we-are-learning-api/revisions/e2ca5265db77?raw)
