---
title: S3 API
description: Generated public TypeScript reference for @relkit/s3.
search:
  exclude: true
sidebar:
  icon: braces
---

{/* Generated by apps/docs/scripts/generate.ts. Do not edit. */}

For configuration and examples, read [integrations](/docs/modules/integrations), [local docker](/docs/modules/integrations/local-docker), [providers](/docs/modules/deployment/providers).

For a complete workflow, follow [upload product images](/guides/storage/upload-product-images).

## Public imports

- `@relkit/s3` — 5 exports
- `@relkit/s3/runtime` — 5 exports
- `@relkit/s3/local-recipe` — 1 exports

## All exported APIs

Names link to their complete contracts. Re-exports share their original contract; legacy exports keep their separate identity. Examples link to the API's inline sample, a maintained repository usage, or the shared module walkthrough.

| API                                                                              | Kind  | Import from               | Example                                                                                                            |
| -------------------------------------------------------------------------------- | ----- | ------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| [createS3BucketProvider](/docs/api/integrations/s3#creates3bucketprovider)       | Value | `@relkit/s3/runtime`      | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/contracts/s3.test.ts#L9)                        |
| [localRecipe](/docs/api/integrations/s3#localrecipe)                             | Value | `@relkit/s3/local-recipe` | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/integration/local-docker-services.test.ts#L145) |
| [runtimeIntegration](/docs/api/integrations/s3#runtimeintegration)               | Value | `@relkit/s3/runtime`      | [Module example](/docs/modules/integrations)                                                                       |
| [s3](/docs/api/integrations/s3#s3)                                               | Value | `@relkit/s3`              | [API example](/docs/api/integrations/s3#s3)                                                                        |
| [S3Adapter](/docs/api/integrations/s3#s3adapter-type-alias)                      | Type  | `@relkit/s3`              | [Module example](/docs/modules/integrations)                                                                       |
| [S3Behavior](/docs/api/integrations/s3#s3behavior-type-alias)                    | Type  | `@relkit/s3`              | [Module example](/docs/modules/integrations)                                                                       |
| [S3BucketOptions](/docs/api/integrations/s3#s3bucketoptions-interface)           | Type  | `@relkit/s3/runtime`      | [Module example](/docs/modules/integrations)                                                                       |
| [S3BucketProvider](/docs/api/integrations/s3#s3bucketprovider-interface)         | Type  | `@relkit/s3/runtime`      | [Module example](/docs/modules/integrations)                                                                       |
| [S3Credentials](/docs/api/integrations/s3#s3credentials-interface)               | Type  | `@relkit/s3/runtime`      | [Module example](/docs/modules/integrations)                                                                       |
| [S3CredentialsOptions](/docs/api/integrations/s3#s3credentialsoptions-interface) | Type  | `@relkit/s3`              | [Module example](/docs/modules/integrations)                                                                       |
| [S3Options](/docs/api/integrations/s3#s3options-interface)                       | Type  | `@relkit/s3`              | [Module example](/docs/modules/integrations)                                                                       |

## `index.ts`

### "./s3.js" (namespace export)

Re-exports all named exports from the "./s3.js" module.

**Signature**

```ts
export * from "./s3.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/index.ts#L1)

## `index.ts`

### localRecipe

**Signature**

```ts
declare const localRecipe: Readonly<{
  kind: "local-service-recipe";
  protocolVersion: 1;
  integrationId: "s3";
  recipeId: "minio-docker";
  recipeVersion: 1;
  materializerId: "docker";
  image: "ghcr.io/teableio/minio@sha256:a1ea29fa28355559ef137d71fc570e508a214ec84ff8083e39bc5428980b015e";
  command: ReadonlyArray<string>;
  ports: Readonly<{ api: 9000; console: 9001 }>;
  volume: Readonly<{ mountPath: "/data" }>;
  health: Readonly<{
    command: ReadonlyArray<string>;
    intervalMs: 500;
    timeoutMs: 2000;
    retries: 60;
  }>;
  generatedSecrets: Readonly<{
    accessKeyId: Readonly<{ bytes: 12 }>;
    secretAccessKey: Readonly<{ bytes: 24 }>;
  }>;
  environment: Readonly<{
    MINIO_ROOT_USER: Readonly<{ secret: "accessKeyId" }>;
    MINIO_ROOT_PASSWORD: Readonly<{ secret: "secretAccessKey" }>;
  }>;
  outputs: (context: LocalServiceRecipeOutputContext) => Readonly<{
    readonly endpoint: `http://127.0.0.1:${number}`;
    readonly bucketName: "relkit";
    readonly region: "us-east-1";
    readonly accessKeyId: string;
    readonly secretAccessKey: string;
  }>;
  initialize: (context: LocalServiceRecipeOutputContext) => Promise<void>;
}>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/local-recipe/index.ts#L14)

## `index.ts`

### "./s3.js" (namespace export)

Re-exports all named exports from the "./s3.js" module.

**Signature**

```ts
export * from "./s3.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/index.ts#L4)

### S3Credentials

**Signature**

```ts
declare const S3Credentials: S3Credentials;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/index.ts#L5)

### runtimeIntegration

**Signature**

```ts
declare const runtimeIntegration: Readonly<{
  kind: "runtime-integration";
  integrationId: "s3";
  registrations: ReadonlyArray<{
    capability: string;
    adapterId: string;
    protocolVersion: number;
    create: ({ connection, behavior }: RuntimeProviderContext) => { value: S3BucketProvider };
  }>;
}>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/index.ts#L7)

## `s3-url.ts`

### endpointFor

**Signature**

```ts
declare const endpointFor: (value: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3-url.ts#L18)

### objectUrl

**Signature**

```ts
declare const objectUrl: (
  endpoint: string,
  bucket: string,
  key: string,
  pathStyle: boolean,
) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3-url.ts#L1)

### requiredText

**Signature**

```ts
declare const requiredText: (value: unknown, label: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3-url.ts#L27)

## `s3-xml.ts`

### decodeS3Xml

**Signature**

```ts
declare const decodeS3Xml: (value: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3-xml.ts#L1)

### s3ErrorDetail

**Signature**

```ts
declare const s3ErrorDetail: (body: string) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3-xml.ts#L9)

### s3XmlValue

**Signature**

```ts
declare const s3XmlValue: (xml: string, name: string) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3-xml.ts#L5)

## `s3.ts`

### S3BucketOptions (interface)

**Signature**

```ts
export interface S3BucketOptions {
  readonly endpoint: string;
  readonly bucketName: string;
  readonly region: string;
  readonly credentials?: S3Credentials;
  readonly forcePathStyle?: boolean;
  readonly signedUrlTtlSeconds?: number;
  readonly fetch?: typeof globalThis.fetch;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3.ts#L12)

### S3BucketProvider (interface)

**Signature**

```ts
export interface S3BucketProvider extends BucketProvider {
  readonly inspector: {
    readonly list: (request: {
      readonly prefix?: string;
      readonly cursor?: string;
      readonly limit: number;
      readonly signal: AbortSignal;
    }) => Promise<{ readonly items: readonly unknown[]; readonly nextCursor?: string }>;
    readonly preview: (request: {
      readonly key: string;
      readonly offset: number;
      readonly limit: number;
      readonly signal: AbortSignal;
    }) => Promise<
      | { readonly bytes: Uint8Array; readonly metadata: unknown; readonly totalBytes: number }
      | undefined
    >;
  };
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3.ts#L22)

### createS3BucketProvider

**Signature**

```ts
declare const createS3BucketProvider: (options: S3BucketOptions) => S3BucketProvider;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/s3.ts#L41)

## `signing.ts`

### S3Credentials (interface)

**Signature**

```ts
export interface S3Credentials {
  readonly accessKeyId: string;
  readonly secretAccessKey: string;
  readonly sessionToken?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/signing.ts#L2)

### SignedRequestInit (type alias)

**Signature**

```ts
type SignedRequestInit = Omit<RequestInit, "body"> & {
  readonly body?: string | Uint8Array | null;
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/signing.ts#L8)

### SignedRequestOptions (interface)

**Signature**

```ts
export interface SignedRequestOptions {
  readonly region: string;
  readonly credentials?: S3Credentials;
  readonly fetch?: typeof globalThis.fetch;
  readonly init?: SignedRequestInit;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/signing.ts#L12)

### assertResponse

**Signature**

```ts
declare const assertResponse: (response: Response, operation: string) => Promise<Response>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/signing.ts#L104)

### presignS3Url

**Signature**

```ts
declare const presignS3Url: (
  url: string,
  method: "GET" | "PUT",
  region: string,
  expiresSeconds: number,
  options?: Pick<SignedRequestOptions, "credentials" | "fetch">,
) => Promise<string>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/signing.ts#L35)

### signedRequest

**Signature**

```ts
declare const signedRequest: (url: string, options: SignedRequestOptions) => Promise<Response>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/runtime/signing.ts#L19)

## `s3.ts`

### s3

Defines an S3-compatible bucket adapter. Omit connection fields for local or infrastructure use.

**Example**

```ts
import { s3 } from "@relkit/s3";
const assets = s3({
  endpoint: "https://s3.example.com",
  bucketName: "assets",
  region: "us-east-1",
});
```

**Signature**

```ts
declare const s3: (options?: S3Options) => S3Adapter;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/s3.ts#L81)

Since v0.2.0

### S3Adapter (type alias)

**Signature**

```ts
type S3Adapter = ProviderAdapter<
  typeof bucket,
  "s3",
  ProviderConnectionValues,
  ProviderBehavior<S3Behavior>
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/s3.ts#L63)

### S3Behavior (type alias)

**Signature**

```ts
type S3Behavior = Readonly<{
  forcePathStyle: boolean;
  signedUrlTtlSeconds: number;
}>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/s3.ts#L58)

### S3CredentialsOptions (interface)

**Signature**

```ts
export interface S3CredentialsOptions {
  readonly accessKeyId: SecretReference;
  readonly secretAccessKey: SecretReference;
  readonly sessionToken?: SecretReference;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/s3.ts#L43)

### S3Options (interface)

**Signature**

```ts
export interface S3Options {
  readonly endpoint?: string | URL | TextReference | UrlReference;
  readonly bucketName?: string | TextReference;
  readonly region?: string | TextReference;
  readonly credentials?: S3CredentialsOptions;
  readonly forcePathStyle?: boolean;
  readonly signedUrlTtlSeconds?: number;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/integrations/packages/s3/src/s3.ts#L49)
