Fluence Storage API

Endpoints to create, view, update and delete storage resources

Business capability
IT Infrastructure Management BC-600.50

Operations 8

GET /v1/storages Get users storages #
POST /v1/storages Create users storage #
GET /v1/storages/default_images Get default images #
POST /v1/storages/delete Delete users storages #
GET /v1/storages/types Get storage types #
GET /v1/storages/{storage_id} Get users storage #
DELETE /v1/storages/{storage_id} Delete users storage #
PATCH /v1/storages/{storage_id} Update users storage #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fluence-storage-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fluence-storage-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fluence Storage API
  description: '# Introduction


    The Fluence API gives programmatic access to the decentralized Fluence compute marketplace, letting you find, rent, and

    manage compute resources without the web UI.'
  contact:
    name: Cloudless Labs
  license:
    name: AGPL-3
    identifier: AGPL-3
  version: 0.10.0
security:
- api_key: []
tags:
- name: Storage
  description: Endpoints to create, view, update and delete storage resources
paths:
  /v1/storages:
    get:
      tags:
      - Storage
      operationId: get_users_storages
      parameters:
      - name: ids
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/UserStorageId'
      - name: name
        in: query
        description: Case-insensitive ILIKE match on name; '%' and '_' in the value act as SQL wildcards (any-sequence / any-single-char), not literal characters.
        required: false
        schema:
          type: string
        example: my-vm
      - name: storageType
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/StorageType'
      - name: status
        in: query
        description: 'Keep only storages whose status is in this set. Repeat the parameter

          using bracket notation (`status[0]=ready&status[1]=new`); a single

          `status=ready` is also accepted. An empty set applies no filtering.'
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/UserStorageStatusDto'
      - name: excludeStatus
        in: query
        description: 'Drop storages whose status is in this set (`excludeStatus[0]=removed`).

          Combined with `status`, the result is the intersection. An empty set

          applies no filtering.'
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/UserStorageStatusDto'
      - name: excludeAttached
        in: query
        description: 'When `true`, exclude storages attached to any VM (as a boot disk or a

          data disk), returning only unattached ones. Absent or `false` applies

          no filtering.'
        required: false
        schema:
          type: boolean
      - name: sort
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/SortFieldDto'
      - name: order
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/SortOrderDto'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          format: u-int64
          minimum: 0
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
          format: u-int64
          minimum: 0
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_UserStorageDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: bad_request
                error: Wrong parameters
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unauthorized
                error: Auth token invalid or missing
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: forbidden
                error: Not allowed to call this endpoint
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unprocessable_entity
                error: Unable to process the entity
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: internal_server_error
                error: Unexpected server error
      security:
      - access_jwt_token:
        - storage:read
      - api_key:
        - storage:read
      summary: Get users storages
      x-summary-source: derived
    post:
      tags:
      - Storage
      operationId: create_users_storage
      requestBody:
        description: Create a new user storage
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserStorageRequest'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserStorageDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: bad_request
                error: Wrong parameters
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unauthorized
                error: Auth token invalid or missing
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: forbidden
                error: Not allowed to call this endpoint
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unprocessable_entity
                error: Unable to process the entity
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: internal_server_error
                error: Unexpected server error
      security:
      - access_jwt_token:
        - storage:write
      - api_key:
        - storage:write
      summary: Create users storage
      x-summary-source: derived
  /v1/storages/default_images:
    get:
      tags:
      - Storage
      operationId: get_default_images
      responses:
        '200':
          description: List of default OS images
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse_DefaultImageDto'
      summary: Get default images
      x-summary-source: derived
  /v1/storages/delete:
    post:
      tags:
      - Storage
      operationId: delete_users_storages
      requestBody:
        description: Storages ids to remove
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserStorageIdsDto'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserStorageDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: bad_request
                error: Wrong parameters
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unauthorized
                error: Auth token invalid or missing
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: forbidden
                error: Not allowed to call this endpoint
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unprocessable_entity
                error: Unable to process the entity
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: internal_server_error
                error: Unexpected server error
      security:
      - access_jwt_token:
        - storage:write
      - api_key:
        - storage:write
      summary: Delete users storages
      x-summary-source: derived
  /v1/storages/types:
    get:
      tags:
      - Storage
      operationId: get_storage_types
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse_StorageTypeInfoDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: bad_request
                error: Wrong parameters
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unauthorized
                error: Auth token invalid or missing
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: forbidden
                error: Not allowed to call this endpoint
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unprocessable_entity
                error: Unable to process the entity
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: internal_server_error
                error: Unexpected server error
      security:
      - access_jwt_token:
        - storage:read
      - api_key:
        - storage:read
      summary: Get storage types
      x-summary-source: derived
  /v1/storages/{storage_id}:
    get:
      tags:
      - Storage
      operationId: get_users_storage
      parameters:
      - name: storage_id
        in: path
        description: The ID of the user storage to fetch
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserStorageDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: bad_request
                error: Wrong parameters
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unauthorized
                error: Auth token invalid or missing
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: forbidden
                error: Not allowed to call this endpoint
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unprocessable_entity
                error: Unable to process the entity
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: internal_server_error
                error: Unexpected server error
      security:
      - access_jwt_token:
        - storage:read
      - api_key:
        - storage:read
      summary: Get users storage
      x-summary-source: derived
    delete:
      tags:
      - Storage
      operationId: delete_users_storage
      parameters:
      - name: storage_id
        in: path
        description: The ID of the user storage to remove
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserStorageDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: bad_request
                error: Wrong parameters
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unauthorized
                error: Auth token invalid or missing
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: forbidden
                error: Not allowed to call this endpoint
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unprocessable_entity
                error: Unable to process the entity
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: internal_server_error
                error: Unexpected server error
      security:
      - access_jwt_token:
        - storage:write
      - api_key:
        - storage:write
      summary: Delete users storage
      x-summary-source: derived
    patch:
      tags:
      - Storage
      operationId: update_users_storage
      parameters:
      - name: storage_id
        in: path
        description: The ID of the user storage to update
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: Update an existing user storage
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserStorageRequest'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserStorageDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: bad_request
                error: Wrong parameters
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unauthorized
                error: Auth token invalid or missing
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: forbidden
                error: Not allowed to call this endpoint
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: unprocessable_entity
                error: Unable to process the entity
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
              example:
                code: internal_server_error
                error: Unexpected server error
      security:
      - access_jwt_token:
        - storage:write
      - api_key:
        - storage:write
      summary: Update users storage
      x-summary-source: derived
components:
  schemas:
    SortFieldDto:
      type: string
      description: Field to order list results by. `status` sorts by the status label text, not a lifecycle order.
      enum:
      - createdAt
      - name
      - status
    UpdateUserStorageRequest:
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
        volumeGb:
          type:
          - integer
          - 'null'
          format: u-int32
          minimum: 0
    UserStorageIdsDto:
      type: object
      required:
      - ids
      properties:
        ids:
          type: array
          items:
            $ref: '#/components/schemas/UserStorageId'
    CollectionResponse_StorageTypeInfoDto:
      type: object
      required:
      - items
      properties:
        items:
          type: array
          items:
            type: object
            required:
            - storageType
            - bootDisk
            - minVolumeGb
            - maxBandwidthReadMib
            - maxBandwidthWriteMib
            - maxIopsRead
            - maxIopsWrite
            properties:
              bootDisk:
                type: boolean
              maxBandwidthReadMib:
                type: integer
                format: u-int64
                minimum: 0
              maxBandwidthWriteMib:
                type: integer
                format: u-int64
                minimum: 0
              maxIopsRead:
                type: integer
                format: u-int64
                minimum: 0
              maxIopsWrite:
                type: integer
                format: u-int64
                minimum: 0
              minVolumeGb:
                type: integer
                format: u-int64
                minimum: 0
              storageType:
                $ref: '#/components/schemas/StorageTypeDto'
    PaginatedResponse_UserStorageDto:
      type: object
      required:
      - items
      - pagination
      properties:
        items:
          type: array
          items:
            type: object
            required:
            - id
            - userId
            - clusterId
            - name
            - storageType
            - status
            - role
            - volumeGb
            - replicated
            - attachedTo
            - createdAt
            properties:
              allowedActions:
                type: array
                items:
                  $ref: '#/components/schemas/StorageActionDto'
                description: 'Operations currently legal for this storage''s `status`, derived from the

                  same guards as request validation.'
              attachedTo:
                type: array
                items:
                  $ref: '#/components/schemas/UserVmId'
              clusterId:
                $ref: '#/components/schemas/ClusterId'
              createdAt:
                type: string
                format: date-time
              id:
                $ref: '#/components/schemas/UserStorageId'
              image:
                oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/StorageImageDto'
              initUrl:
                type:
                - string
                - 'null'
              lastPaidAt:
                type:
                - string
                - 'null'
                format: date-time
              name:
                type: string
              paidUntil:
                type:
                - string
                - 'null'
                format: date-time
              priceHourlyUsd:
                type:
                - string
                - 'null'
                description: 'Request-time hourly price snapshot in USD, serialized as a string;

                  absent when the catalog has no active price for this resource. A UI

                  estimate, not the amount billed.'
                example: '0.05'
              priceMonthlyUsd:
                type:
                - string
                - 'null'
                description: 'Request-time monthly price snapshot in USD (`hourly × 730`), serialized

                  as a string. See `price_hourly_usd`.'
                example: '36.50'
              readySince:
                type:
                - string
                - 'null'
                format: date-time
              removedAt:
                type:
                - string
                - 'null'
                format: date-time
              replicated:
                type: boolean
              role:
                $ref: '#/components/schemas/StorageRoleDto'
              status:
                $ref: '#/components/schemas/UserStorageStatusDto'
              storageType:
                $ref: '#/components/schemas/StorageTypeDto'
              userId:
                $ref: '#/components/schemas/UserId'
              volumeGb:
                type: integer
                format: u-int64
                minimum: 0
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
    CollectionResponse_DefaultImageDto:
      type: object
      required:
      - items
      properties:
        items:
          type: array
          items:
            type: object
            required:
            - id
            - name
            - distribution
            - slug
            - downloadUrl
            - iconUrl
            - username
            - createdAt
            - updatedAt
            properties:
              createdAt:
                type: string
                example: '2024-01-01T00:00:00Z'
              distribution:
                type: string
                example: Ubuntu
              downloadUrl:
                type: string
                example: https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img
              iconUrl:
                type: string
                example: https://f2nrfq3ufzjj08qq.public.blob.vercel-storage.com/images_icons/ubuntu-icon-fvmHzDIRMkyrxr21oEBTo0IV0emlv5.svg
              id:
                type: string
                example: da1e99153be74618820a164eebcbdc66
              name:
                type: string
                example: 24.04 (LTS) x64
              slug:
                type: string
                example: ubuntu-24-04-x64
              updatedAt:
                type: string
                example: '2024-01-01T00:00:00Z'
              username:
                type: string
                example: ubuntu
    UserId:
      type: string
      format: uuid
    StorageType:
      type: string
      enum:
      - HDD
      - SSD
      - NVMe
    ErrorCode:
      type: string
      description: 'Stable, machine-readable error code carried by every non-2xx response.


        Clients should branch on `code` rather than parsing the human-readable

        `error` string. Status-derived variants cover any error that does not

        supply a more specific code; semantic variants are set explicitly at the

        construction site (see `VodopadError::code`).'
      enum:
      - bad_request
      - unauthorized
      - forbidden
      - not_found
      - conflict
      - unprocessable_entity
      - not_acceptable
      - insufficient_balance
      - service_unavailable
      - internal_server_error
    StorageActionDto:
      type: string
      description: 'Wire representation of [`StorageAction`] — the operations exposed via

        `UserStorageDto.allowedActions`.'
      enum:
      - update
      - delete
      - attachToVm
    NewStorageType:
      type: string
      enum:
      - NVME
    UserStorageId:
      type: string
      format: uuid
    StorageTypeDto:
      type: string
      enum:
      - HDD
      - SSD
      - NVME
    UserVmId:
      type: string
      format: uuid
    StorageImageDto:
      type: object
      description: 'Slim reference to the OS image a storage was created from. Present only when

        the storage''s `init_url` matches a catalog image; absent for custom URLs and

        data disks.'
      required:
      - id
      - name
      - slug
      - distribution
      properties:
        distribution:
          type: string
          example: Ubuntu
        id:
          type: string
          example: da1e99153be74618820a164eebcbdc66
        name:
          type: string
          example: 24.04 (LTS) x64
        slug:
          type: string
          example: ubuntu-24-04-x64
    UserStorageStatusDto:
      type: string
      enum:
      - new
      - created
      - ready
      - updating
      - failed
      - removing
      - removed
    StorageRoleDto:
      type: string
      enum:
      - BOOT
      - DATA
    CreateUserStorageRequest:
      type: object
      required:
      - clusterId
      - name
      - storageType
      - volumeGb
      - replicated
      properties:
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        name:
          type: string
        osImage:
          type:
          - string
          - 'null'
          example: https://example.com/image.qcow2
        replicated:
          type: boolean
        storageType:
          $ref: '#/components/schemas/NewStorageType'
        volumeGb:
          type: integer
          format: u-int32
          minimum: 0
    ErrorBody:
      type: object
      required:
      - error
      - code
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
          description: The stable, machine-readable error code.
        error:
          type: string
          description: The human-readable error message.
    PaginationInfo:
      type: object
      required:
      - totalRecords
      - filteredRecords
      - totalPages
      - currentPage
      - perPage
      properties:
        currentPage:
          type: integer
          format: u-int64
          minimum: 0
        filteredRecords:
          type: integer
          format: u-int64
          minimum: 0
        perPage:
          type: integer
          format: u-int64
          minimum: 0
        totalPages:
          type: integer
          format: u-int32
          minimum: 0
        totalRecords:
          type: integer
          format: u-int64
          minimum: 0
    SortOrderDto:
      type: string
      enum:
      - asc
      - desc
    ClusterId:
      type: string
      format: uuid
    UserStorageDto:
      type: object
      required:
      - id
      - userId
      - clusterId
      - name
      - storageType
      - status
      - role
      - volumeGb
      - replicated
      - attachedTo
      - createdAt
      properties:
        allowedActions:
          type: array
          items:
            $ref: '#/components/schemas/StorageActionDto'
          description: 'Operations currently legal for this storage''s `status`, derived from the

            same guards as request validation.'
        attachedTo:
          type: array
          items:
            $ref: '#/components/schemas/UserVmId'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        createdAt:
          type: string
          format: date-time
        id:
          $ref: '#/components/schemas/UserStorageId'
        image:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/StorageImageDto'
        initUrl:
          type:
          - string
          - 'null'
        lastPaidAt:
          type:
          - string
          - 'null'
          format: date-time
        name:
          type: string
        paidUntil:
          type:
          - string
          - 'null'
          format: date-time
        priceHourlyUsd:
          type:
          - string
          - 'null'
          description: 'Request-time hourly price snapshot in USD, serialized as a string;

            absent when the catalog has no active price for this resource. A UI

            estimate, not the amount billed.'
          example: '0.05'
        priceMonthlyUsd:
          type:
          - string
          - 'null'
          description: 'Request-time monthly price snapshot in USD (`hourly × 730`), serialized

            as a string. See `price_hourly_usd`.'
          example: '36.50'
        readySince:
          type:
          - string
          - 'null'
          format: date-time
        removedAt:
          type:
          - string
          - 'null'
          format: date-time
        replicated:
          type: boolean
        role:
          $ref: '#/components/schemas/StorageRoleDto'
        status:
          $ref: '#/components/schemas/UserStorageStatusDto'
        storageType:
          $ref: '#/components/schemas/StorageTypeDto'
        userId:
          $ref: '#/components/schemas/UserId'
        volumeGb:
          type: integer
          format: u-int64
          minimum: 0
  securitySchemes:
    access_jwt_token:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token issued by Fluence
    api_key:
      type: apiKey
      in: header
      name: X-API-KEY