---
title: "Create new storage"
method: POST
path: "/api/storages/azure/"
tags: ["Storage: Azure"]
---

# Create new storage

`POST /api/storages/azure/`

Create new Azure import storage

## Request body

- AzureBlobImportStorageWriteRequest
  - `account_key` string, nullable — Azure Blob account key
  - `account_name` string, nullable — Azure Blob account name
  - `container` string, nullable — Azure blob container
  - `description` string, nullable — Cloud storage description
  - `prefix` string, nullable — Azure blob prefix name
  - `presign` boolean
  - `presign_ttl` integer — Presigned URLs TTL (in minutes)
  - `project` integer, required — A unique integer value identifying this project.
  - `recursive_scan` boolean, nullable — Perform recursive scan over the container content
  - `regex_filter` string, nullable — Cloud storage regex for filtering objects
  - `synchronizable` boolean
  - `title` string, nullable — Cloud storage title
  - `use_blob_urls` boolean — Interpret objects as BLOBs and generate URLs

## Response `201`

- AzureBlobImportStorage
  - `account_key` string, nullable — Azure Blob account key
  - `account_name` string, nullable — Azure Blob account name
  - `container` string, nullable — Azure blob container
  - `created_at` string, date-time, required — Creation time
  - `description` string, nullable — Cloud storage description
  - `id` integer, required
  - `last_sync` string, date-time, nullable — Last sync finished time
  - `last_sync_count` integer, nullable — Count of tasks synced last time
  - `last_sync_job` string, nullable — Last sync job ID
  - `meta` unknown
  - `prefix` string, nullable — Azure blob prefix name
  - `presign` boolean
  - `presign_ttl` integer — Presigned URLs TTL (in minutes)
  - `project` integer, required — A unique integer value identifying this project.
  - `recursive_scan` boolean, nullable — Perform recursive scan over the container content
  - `regex_filter` string, nullable — Cloud storage regex for filtering objects
  - `status` 'initialized' | 'queued' | 'in_progress' | 'failed' | 'completed' | 'completed_with_errors' — * `initialized` - Initialized * `queued` - Queued * `in_progress` - In progress * `failed` - Failed * `completed` - Completed * `completed_with_errors` - Completed with errors
  - `synchronizable` boolean
  - `title` string, nullable — Cloud storage title
  - `traceback` string, nullable — Traceback report for the last failed sync
  - `type` string, required
  - `use_blob_urls` boolean — Interpret objects as BLOBs and generate URLs

## Changes

> 97 revisions in range; 1 not diffed.

- **2026-08-07** `e1ba2ecdbabb` — 3 breaking, 2 warning, 13 info
  - request body became required
  - the request property `project` became required
  - the `title` request property's maxLength was decreased to `256`
  - the `presign_ttl` request property's max was set to `32767.00`
  - …14 more

[Change history](https://skmtc.dev/humansignal/apis/label-studio-api/changes/api/storages/azure/post.md)

---

[API](https://skmtc.dev/humansignal/apis/label-studio-api.md) · [All operations](https://skmtc.dev/humansignal/apis/label-studio-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/humansignal/label-studio-api/revisions/b589624c66c3/schema)
