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

# Create shuttle path mapping import

> Accepts a spreadsheet of path mappings, already stored in Box, and replaces the job's path mappings. A file that is not a mapping workbook, or that exceeds the size or row limits (10 MiB Box download limit; 100,000 mapping rows), returns `400` synchronously and leaves the job unchanged. An accepted import always replaces every path mapping on the job. When all rows are valid the workbook is deployed in full. When any row is invalid the job ends with no path mappings and `mapping_state` becomes `paths_import_rejected` until the next import or the next manual path-mapping change. Row problems are listed by `GET /shuttle_mapping_errors?job_id=…` with category `path_import`, messages of the form `Row N: …`, at most 500 entries plus one overflow entry. Validation and deployment are asynchronous after acceptance. Poll `GET /shuttle_jobs/{shuttle_job_id}` while `mapping_state` is `importing_paths`. Only one import may be in flight per job.

> [!NOTE]
>
> Learn more about [Box SDK versioning strategy](https://developer.box.com/guides/tooling/sdks/sdk-versioning.md).


## OpenAPI

````yaml box-openapi-v2026.0.json POST /shuttle_path_mapping_imports
openapi: 3.0.2
info:
  title: Box Platform API
  description: >-
    [Box Platform](https://developer.box.com) provides functionality to provide
    access to content stored within [Box](https://box.com). It provides
    endpoints for basic manipulation of files and folders, management of users
    within an enterprise, as well as more complex topics such as legal holds and
    retention policies.
  termsOfService: https://cloud.app.box.com/s/rmwxu64h1ipr41u49w3bbuvbsa29wku9
  contact:
    name: Box, Inc
    url: https://developer.box.com
    email: devrel@box.com
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '2026.0'
  x-box-commit-hash: da48f6b132
servers:
  - url: https://api.box.com/2.0
    description: Box Platform API server.
security:
  - OAuth2Security: []
tags:
  - name: Automate Workflows
    description: Endpoints for listing and manually starting Automate workflow actions.
    x-box-tag: automate_workflows
  - name: Convert to Box Note
    description: Create Box Notes from supported source content (for example Markdown).
    x-box-tag: notes
  - name: Document Split
    description: >-
      A set of endpoints used to split a paginated source document into multiple
      files based on user-defined or AI-generated page ranges.
    x-box-tag: document_split
  - name: Query
    description: Query for your items.
    x-box-tag: query
  - name: Shuttle
    description: >-
      Endpoints for managing Box Shuttle, the service that migrates content into
      Box from external sources. Use these endpoints to manage the systems that
      Shuttle migrates content from and the migration jobs that Shuttle runs.
    x-box-tag: shuttle
externalDocs:
  description: Box Developer Documentation.
  url: https://developer.box.com
paths:
  /shuttle_path_mapping_imports:
    post:
      tags:
        - Shuttle
      summary: Create shuttle path mapping import
      description: >-
        Accepts a spreadsheet of path mappings, already stored in Box, and
        replaces the job's path mappings. A file that is not a mapping workbook,
        or that exceeds the size or row limits (10 MiB Box download limit;
        100,000 mapping rows), returns `400` synchronously and leaves the job
        unchanged. An accepted import always replaces every path mapping on the
        job. When all rows are valid the workbook is deployed in full. When any
        row is invalid the job ends with no path mappings and `mapping_state`
        becomes `paths_import_rejected` until the next import or the next manual
        path-mapping change. Row problems are listed by `GET
        /shuttle_mapping_errors?job_id=…` with category `path_import`, messages
        of the form `Row N: …`, at most 500 entries plus one overflow entry.
        Validation and deployment are asynchronous after acceptance. Poll `GET
        /shuttle_jobs/{shuttle_job_id}` while `mapping_state` is
        `importing_paths`. Only one import may be in flight per job.
      operationId: post_shuttle_path_mapping_imports_v2026.0
      parameters:
        - $ref: '#/components/parameters/BoxVersionHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShuttlePathMappingImportCreateRequest'
            examples:
              workbook:
                summary: Import path mappings from a Box file
                value:
                  job_id: 6a3ba68e810d9156194530a1
                  file_id: '12345678901'
      responses:
        '202':
          description: >-
            The import was accepted. Validation and deployment continue
            asynchronously. Poll `GET /shuttle_jobs/{shuttle_job_id}` until
            `mapping_state` is no longer `importing_paths`. A rejected import
            ends with `mapping_state` `paths_import_rejected` and an empty
            path-mapping list; a successful import moves on to a later
            mapping-preparation state such as `paths_ready` or `ready`.
        '400':
          description: >-
            Returned when the request body is malformed or fails request
            validation, or when the referenced file cannot be accepted as a
            mapping workbook (for example it is not a spreadsheet, has no
            mapping sheets, or exceeds the size or row limits). Nothing is
            stored and the job's path mappings are unchanged. Row-level mapping
            errors are not returned here; after a `202` they finish
            asynchronously as `paths_import_rejected` and appear on `GET
            /shuttle_mapping_errors`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        '401':
          description: >-
            Returned when the access token provided in the `Authorization`
            header is not recognized or not provided.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        '403':
          description: >-
            Returned when the authenticated user is not an admin or co-admin
            with permission to manage enterprise properties.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        '404':
          description: >-
            Returned when the shuttle job is not found, or the referenced file
            does not exist or cannot be read by the authenticated user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        '409':
          description: Returned when an import is already in progress for the shuttle job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        '429':
          description: >-
            Returned when the user has sent too many requests in a given amount
            of time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        default:
          description: An unexpected client error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
components:
  parameters:
    BoxVersionHeader:
      name: box-version
      in: header
      description: Version header.
      allowEmptyValue: false
      required: true
      schema:
        type: string
        enum:
          - '2026.0'
      example: '2026.0'
  schemas:
    ShuttlePathMappingImportCreateRequest:
      description: >-
        The request body used to import a shuttle job's path mappings from a
        spreadsheet already stored in Box.
      type: object
      properties:
        job_id:
          description: >-
            The unique identifier of the shuttle job whose path mappings are
            replaced.
          type: string
          example: 6a3ba68e810d9156194530a1
        file_id:
          description: >-
            The unique identifier of the Box file holding the mapping workbook.
            The file is read as the calling user, so it must live somewhere that
            user can download from.
          type: string
          example: '12345678901'
      required:
        - job_id
        - file_id
      title: Shuttle path mapping import create request
      x-box-resource-id: shuttle_path_mapping_import_create_request_v2026.0
      x-box-tag: shuttle
    ClientError:
      description: A generic error.
      type: object
      properties:
        type:
          description: The value will always be `error`.
          type: string
          example: error
          enum:
            - error
          nullable: false
        status:
          description: The HTTP status of the response.
          type: integer
          format: int32
          example: 400
          nullable: false
        code:
          description: A Box-specific error code.
          type: string
          example: item_name_invalid
          enum:
            - created
            - accepted
            - no_content
            - redirect
            - not_modified
            - bad_request
            - unauthorized
            - forbidden
            - not_found
            - method_not_allowed
            - conflict
            - precondition_failed
            - too_many_requests
            - internal_server_error
            - unavailable
            - item_name_invalid
            - insufficient_scope
        message:
          description: A short message describing the error.
          type: string
          example: Method Not Allowed
          nullable: false
        context_info:
          description: >-
            A free-form object that contains additional context about the error.
            The possible fields are defined on a per-endpoint basis. `message`
            is only one example.
          type: object
          example:
            message: Something went wrong
          additionalProperties: {}
          nullable: true
        help_url:
          description: A URL that links to more information about why this error occurred.
          type: string
          example: >-
            https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/
          nullable: false
        request_id:
          description: >-
            A unique identifier for this response, which can be used when
            contacting Box support.
          type: string
          example: abcdef123456
          nullable: false
      title: Client error
      x-box-resource-id: client_error_v2026.0
  securitySchemes:
    OAuth2Security:
      type: oauth2
      description: >-
        The access token received from the authorization server in the OAuth 2.0
        flow.
      flows:
        authorizationCode:
          authorizationUrl: https://account.box.com/api/oauth2/authorize
          tokenUrl: https://api.box.com/oauth2/token
          scopes:
            root_readonly: Read all files and folders stored in Box
            root_readwrite: Read and write all files and folders stored in Box
            manage_app_users: Provision and manage app users
            manage_managed_users: Provision and manage managed users
            manage_groups: Manage an enterprise's groups
            manage_webhook: Create webhooks programmatically through the API
            manage_enterprise_properties: Manage enterprise properties
            manage_data_retention: Manage data retention polices
            manage_legal_hold: Manage Legal Holds

````