# Create totes in batch

Products
            Plans
          
        
        
          
            
              
              Formerly ShipEngine
            
            
              Free
              Advanced
              Enterprise
            
          
          
            
              
            
            
              Free
              Starter
              Standard
              Premium
            
          
        
      
      
        
          Learn about products and plans
          
        
      
    

Create multiple totes at once. Returns both successfully created totes and any failures.

Endpoint: POST /v2/totes
Version: 2.0.0
Security: api_keys

## Request fields (application/json):

  - `totes` (array, required)
    Array of totes to create

  - `totes.inventory_warehouse_id` (string, required)
    The warehouse where this tote will be created
    Example: "se-28529731"

  - `totes.tote_name` (string, required)
    Name for the new tote
    Example: "Tote-B5"

  - `totes.tote_barcode` (string)
    Barcode identifier for the tote (optional)
    Example: "TOTE789012"

  - `return_succeeded_totes` (boolean)
    Whether to include successfully created totes in the response. When false, only failed_totes will be returned.

## Response 200 fields (application/json):

  - `succeeded_totes` (array)
    Totes that were successfully created

  - `succeeded_totes.tote_id` (string, required)
    Unique identifier for the tote
    Example: "se-28529731"

  - `succeeded_totes.inventory_warehouse_id` (string, required)
    The warehouse this tote belongs to
    Example: "se-28529731"

  - `succeeded_totes.tote_name` (string, required)
    Name of the tote
    Example: "Tote-A1"

  - `succeeded_totes.tote_barcode` (string)
    Barcode identifier for the tote
    Example: "TOTE123456"

  - `succeeded_totes.created_at` (string, required)
    Date and time when the tote was created
    Example: "2024-01-15T10:30:00Z"

  - `failed_totes` (array)
    Totes that failed to be created

  - `failed_totes.inventory_warehouse_id` (string)
    The warehouse ID from the failed request
    Example: "se-28529731"

  - `failed_totes.tote_name` (string)
    The tote name from the failed request
    Example: "Tote-C3"

  - `failed_totes.tote_barcode` (string)
    The tote barcode from the failed request
    Example: "TOTE456789"

  - `failed_totes.error_message` (string)
    Error message explaining why creation failed
    Example: "A tote with this name already exists in the warehouse"

## Response 400 fields (application/json):

  - `request_id` (string, required)
    A UUID that uniquely identifies the request id.
This can be given to the support team to help debug non-trivial issues that may occur
    Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"

  - `errors` (array, required)
    The errors associated with the failed API call

  - `errors.error_source` (string, required)
    The source of the error, as indicated by the name this informs us if the API call failed because of the
carrier, the order source, the ShipStation API itself, or the underlying ShipEngine platform.
    Enum: "carrier", "order_source", "ShipStation", "shipengine"

  - `errors.error_type` (string, required)
    The type of error
    Enum: "account_status", "business_rules", "validation", "security", "system", "integrations"

  - `errors.error_code` (string, required)
    The error code specified for the failed API Call
    Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned", "freight_connection_inactive", "freight_provider_id_required", "freight_shipment_not_found", "freight_tracking_not_available", "freight_tracking_not_found", "freight_shipment_not_batchable", "freight_provider_already_connected"

  - `errors.message` (string, required)
    An error message associated with the failed API call
    Example: "Body of request cannot be null."

  - `errors.field_name` (string)
    The name of the field that caused the error (only present for validation errors)
    Example: "inventory_warehouse_id"

  - `errors.field_value` (string)
    The invalid value that was provided for the field (only present for validation errors)
    Example: "invalid-id"


