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

# Create Layer Structure with Layers

> Creates a layer structure and all of its layers in a single request. `name` is required and must be unique across the submission. Every entry in `layers` must carry its own `name` too — unlike the single-layer create endpoint, this one never auto-generates a name from `attachment`/`limit` — and two layers in the same request may not share a name.  The whole request is atomic: if any layer is rejected, nothing is created.



## OpenAPI

````yaml https://vision.dev.pingintel.com/api/schema/?format=json post /api/v1/submission/{pingid}/cat/layer-structures/bulk
openapi: 3.0.3
info:
  title: Ping.Vision API
  version: v1.0
  description: >
    ### Ping.Vision API


    This API provides convenient, efficient access to Ping Intel's data and
    services. It is designed to be used by developers and data scientists to
    integrate Ping Intel's capabilities into their applications.


    Once SSO is set up with your organization, you can create an Organization or
    Personal API key at https://auth.pingintel.com/org.


    Please see the Python client library
    [pingintel-api](https://pypi.org/project/pingintel-api/) for commandline
    tools and programmatic access, and you

    can refer to the following documentation for details on interacting with the
    system via the HTTP API.
  contact:
    email: support@pingintel.com
    name: Ping Intel
    url: https://www.pingintel.com
servers:
  - url: https://vision.pingintel.com
    description: Ping.Vision API
  - url: https://vision.staging.pingintel.com
    description: Ping.Vision API (staging)
security: []
tags:
  - name: Create Submission
    description: The Create Submission API allows you to add new data into the system.
  - name: Get Submission Data
    description: >-
      The Get Submission Data API lets you list and look up submissions, track
      their events, download their documents, and generate or retrieve their
      outputs.
  - name: Update Submission
    description: >-
      The Update Submission API provides various endpoints to update, modify, or
      act upon existing submissions.
  - name: CAT Modeling
    description: >-
      The CAT Modeling API manages catastrophe modeling setup for a submission:
      coverage options, peril groups, layer structures, and modeling options. It
      also generates Acc/Loc files for CAT models.
  - name: User Memberships
    description: >-
      The User Memberships API allows you to add, remove, and change the role of
      users in different teams, divisions, or companies.
  - name: Reference Data
    description: >-
      The Reference Data API lists lookup values used by other endpoints, such
      as the submission statuses available to a division.
  - name: Account
    description: >-
      The Account API returns information about the authenticated user: their
      identity, permissions, and sitewide settings.
paths:
  /api/v1/submission/{pingid}/cat/layer-structures/bulk:
    post:
      tags:
        - CAT Modeling
      summary: Create Layer Structure with Layers
      description: >-
        Creates a layer structure and all of its layers in a single request.
        `name` is required and must be unique across the submission. Every entry
        in `layers` must carry its own `name` too — unlike the single-layer
        create endpoint, this one never auto-generates a name from
        `attachment`/`limit` — and two layers in the same request may not share
        a name.  The whole request is atomic: if any layer is rejected, nothing
        is created.
      operationId: api_v1_submission_cat_layer_structures_bulk_create
      parameters:
        - in: path
          name: pingid
          schema:
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LayerStructureBulkCreate'
            examples:
              CreateRequest:
                value:
                  name: Structure 3
                  layers:
                    - name: Primary 25
                      limit: 25000000
                      participation_percent: 100
                    - name: 10x25
                      attachment: 25000000
                      limit: 10000000
                      participation_percent: 50
                summary: Create request
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/LayerStructureBulkCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/LayerStructureBulkCreate'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LayerStructureDetail'
              examples:
                Created:
                  value:
                    uuid: 019def23-4b85-7ecb-a65c-98a92cf67f66
                    name: Structure 3
                    modified_time: '2026-04-29T02:12:00.000000Z'
                    created_time: '2026-04-29T02:12:00.000000Z'
                    layers:
                      - uuid: 019def23-4b85-7ecb-a65c-98a92cf67f71
                        name: Primary 25
                        included: true
                        attachment: null
                        limit: 25000000
                        participation_amount: 25000000
                        participation_percent: 100
                        premium: null
                      - uuid: 019def23-4b85-7ecb-a65c-98a92cf67f72
                        name: 10x25
                        included: true
                        attachment: 25000000
                        limit: 10000000
                        participation_amount: 5000000
                        participation_percent: 50
                        premium: null
          description: ''
      security:
        - authorization_header: []
components:
  schemas:
    LayerStructureBulkCreate:
      type: object
      properties:
        name:
          type: string
          description: >-
            Name of the layer structure. Required, and unique across the
            submission.
          maxLength: 100
        layers:
          type: array
          items:
            $ref: '#/components/schemas/LayerStructureBulkLayerCreate'
          description: >-
            The layers to create alongside the structure. Omit to create it
            empty.
      required:
        - name
    LayerStructureDetail:
      type: object
      properties:
        created_time:
          type: string
          format: date-time
          readOnly: true
        layers:
          type: array
          items:
            $ref: '#/components/schemas/Layer'
        modified_time:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        name:
          type: string
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the policy terms layer structure
      required:
        - created_time
        - layers
        - modified_time
        - name
        - uuid
    LayerStructureBulkLayerCreate:
      type: object
      description: >-
        A layer in a bulk create payload.


        `name` is required: unlike the single-layer create endpoint, the bulk
        API never auto-generates a

        layer name from `attachment`/`limit`. Any term left out takes its
        default.
      properties:
        name:
          type: string
          maxLength: 100
        attachment:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        included:
          type: boolean
          default: true
        limit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
        participation_percent:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          nullable: true
        premium:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          nullable: true
      required:
        - name
    Layer:
      type: object
      properties:
        attachment:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        included:
          type: boolean
          readOnly: true
        limit:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        name:
          type: string
          readOnly: true
        participation_amount:
          type: integer
        participation_percent:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        premium:
          type: string
          format: decimal
          pattern: ^-?\d{0,18}(?:\.\d{0,2})?$
          readOnly: true
          nullable: true
        uuid:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: UUID of the layer
      required:
        - attachment
        - included
        - limit
        - name
        - participation_amount
        - participation_percent
        - premium
        - uuid
  securitySchemes:
    authorization_header:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Supports `Token `-prefixed API keys and `Bearer `-prefixed JWT-based
        authentication.

````