Introduction
  • 17 Sep 2026
  • Dark
    Light

Introduction

  • Dark
    Light

Article summary

Availability

Early Access: July 1, 2026

Early Access is gated; contact the Backblaze Sales team for access.

Limited Availability: July 1, 2026

This API is available only to customers with access to the Backblaze Enterprise Web Console. For more information, contact the Backblaze Sales team.

The Backblaze IAM and STS API can be used to manage AWS-compatible identity and access management resources, such as IAM users, IAM roles, inline policies, access keys, temporary credentials, and bucket policies. The API is designed to work with common AWS tools and SDKs when configured to use the appropriate Backblaze IAM, STS, or S3-compatible endpoint.

Using the Backblaze IAM and STS API, you can:

  • Create, list, and delete IAM users and IAM roles

  • Add, list, and delete inline policies on users and roles

  • Create, update, list, and delete access keys for IAM users

  • Issue short-lived temporary security credentials with AssumeRole

  • Identify the caller using GetCallerIdentity

  • Add, retrieve, and delete bucket policies through the S3-compatible API

Prerequisites

To get started, you need access to the Backblaze Enterprise Web Console and credentials with the permissions required for the IAM or STS operations that you want to perform.

For more information about access, contact the Backblaze Sales team.

Authentication

All IAM and STS requests must be signed using AWS Signature Version 4. Required headers include:

Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: <service-endpoint>
X-Amz-Date: YYYYMMDD'T'HHMMSS'Z'
Authorization: AWS4-HMAC-SHA256 Credential=..., SignedHeaders=..., Signature=...

Set the Host header to the endpoint for the service that you are calling.

The SigV4 signing region is not validated. You can use any non-empty region value as long as you use it consistently when signing the request. Use iam as the signing service for IAM requests and sts as the signing service for STS requests.

When using temporary credentials issued through AssumeRole, also include the X-Amz-Security-Token header with the session token.

API Base URLs

The Backblaze IAM and STS API uses distinct endpoints for different service categories:

Service

Endpoint

IAM (Roles, Users, Policies, Access Keys)

iam.backblazeb2.com

STS (AssumeRole, GetCallerIdentity)

sts.backblazeb2.com

Bucket Policies (Put, Get, Delete)

s3.{region}.backblazeb2.com

Regional STS endpoints are not currently supported. Bucket policy requests must be sent to the S3-compatible endpoint for the region that contains the bucket.

Request and Response Formats

The Backblaze IAM and STS API uses the AWS Query API model. All IAM and STS operations support POST /, with an Action parameter in the form-encoded body:

POST / HTTP/1.1
Host: iam.backblazeb2.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Action=CreateRole&Version=2010-05-08&RoleName=example-role&...

Selected read-only operations also support GET with the same parameters supplied in the query string.

IAM and STS responses are XML documents that follow AWS IAM and STS response conventions. Bucket policy operations are served through the S3-compatible API and follow S3-compatible request and response conventions.

Status Codes

For calls to the Backblaze IAM and STS API, the HTTP status code that is returned indicates success or failure. A status of 200 (OK) means success. Bucket policy operations may return 204 (No Content). Any code in the 400 or 500 range is a failure. The API does not use redirects (status codes in the 300 range).

Error Structure

Failures are returned as XML documents with a Type, Code, and Message, along with a top-level RequestId. Include the RequestId value when contacting support so the request can be correlated with server-side traces.

HTTP Status Codes

Status

Description

200

OK — The request was successful. The response body is an XML document specific to the Action invoked.

204

NO CONTENT — The request was successful and the operation does not return a response body. Returned by PutBucketPolicy and DeleteBucketPolicy.

400

BAD REQUEST — There is a problem with a request parameter. Typical codes are ValidationError for malformed or invalid input and MalformedPolicyDocument for policy JSON that is invalid or unsupported.

403

ACCESS DENIED — The caller is not authorized for this operation. The typical code is AccessDenied. When a caller is not authorized to access an IAM resource, the API returns 403 AccessDenied without disclosing whether the resource exists. AssumeRole also returns 403 AccessDenied when the requested role cannot be resolved or assumed.

404

NOT FOUND — For an authorized caller, a nonexistent IAM resource returns 404 NoSuchEntity. Bucket policy operations may return NoSuchBucket or NoSuchBucketPolicy.

409

CONFLICT — The resource already exists or a quota or size limit was exceeded. Typical codes are EntityAlreadyExists and LimitExceeded.

429

THROTTLING — The request was rate-limited. The typical code is Throttling. Retry with exponential backoff.

500

INTERNAL FAILURE — An unexpected error occurred. Include the RequestId when contacting support.

XML Error Structure

Field

Description

Type

Classification of the error.

Code

A short identifier that identifies the error condition, for example ValidationError, NoSuchEntity, or AccessDenied.

Message

A human-readable message, in English, indicating what went wrong.

RequestId

Opaque correlation identifier. Include this value in support requests.

The following example shows an XML error response:

<ErrorResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">
    <Error>
        <Type>Sender</Type>
        <Code>ValidationError</Code>
        <Message>Invalid RoleName</Message>
    </Error>
    <RequestId>req-1234567890</RequestId>
</ErrorResponse>

API Versions

Service

Version

IAM

2010-05-08

STS

2011-06-15

Release Timeline

The Backblaze IAM and STS API reaches production in two waves.

The initial production release on September 30, 2026 includes AssumeRole, CreateRole, all User and User Policy operations, and all Access Key operations.

A second production release on November 5, 2026 adds GetCallerIdentity, Role Policy operations, ListRoles, DeleteRole, and all Bucket Policy operations. Operations in the second wave display an Available Nov 5, 2026 badge in the API reference.

Bucket policy enforcement also begins November 5, 2026. Before that date, bucket policies set through the API are stored but not applied.

Feature Scope

Backblaze IAM intentionally supports a reduced feature set in the first release. Managed policies, policy attachments, permissions boundaries, resource tagging on IAM resources, and regional STS endpoints are not supported.

Policies are supported only as inline role policies, inline user policies, session policies passed to AssumeRole, and bucket policies.

For launch, supported policy conditions include IpAddress, NotIpAddress, and the aws:SourceIp condition key, including IPv4 and IPv6 CIDR matching.

Backblaze IAM is eventually consistent. Changes to users, roles, policies, access keys, and bucket policies may take a short amount of time to propagate.

STS credentials represent a snapshot of permissions at the time the session is issued. Policy changes made after an STS session is created do not change the permissions for that existing session. The changes apply only to newly issued sessions.


Was this article helpful?

What's Next