Filebase S3-Compatible API

The Filebase S3-Compatible API provides standard AWS S3 protocol support for bucket and object management. Developers can use any existing S3 SDK, CLI tool, or framework with endpoint s3.filebase.io and region us-east-1. Authentication uses AWS Signature Version 4 (AWS4-HMAC-SHA256) with Filebase access key and secret key pairs. Supported operations include bucket creation and deletion, object upload (including multipart), copy, delete, and listing. Objects stored in IPFS-backed buckets are automatically pinned with 3x geo-redundant replication.

Documentation

OpenAPI Specification

filebase-s3-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Filebase S3-Compatible API
  description: >-
    The Filebase S3-Compatible API provides standard AWS S3 protocol support for
    bucket and object management. Developers can use any existing S3 SDK, CLI tool,
    or framework with endpoint s3.filebase.io and region us-east-1. Authentication
    uses AWS Signature Version 4 (AWS4-HMAC-SHA256) with Filebase access key and
    secret key pairs. Supported operations include bucket creation and deletion,
    object upload (including multipart), copy, delete, and listing. Objects stored
    in IPFS-backed buckets are automatically pinned with 3x geo-redundant replication.
  version: "2006-03-01"
  contact:
    name: Filebase Support
    url: https://filebase.com/
    email: [email protected]
  termsOfService: https://filebase.com/terms/
  license:
    name: Proprietary
    url: https://filebase.com/terms/
externalDocs:
  description: Filebase S3-Compatible API Documentation
  url: https://filebase.com/docs/
servers:
  - url: https://s3.filebase.io
    description: Filebase S3-Compatible Endpoint
  - url: https://{bucket}.s3.filebase.io
    description: Filebase S3 Virtual-Hosted-Style Endpoint
    variables:
      bucket:
        default: my-bucket
        description: Bucket name
security:
  - AWS4Auth: []
paths:
  /:
    get:
      operationId: listBuckets
      summary: List all buckets
      description: >-
        Returns a list of all buckets owned by the authenticated user.
        Equivalent to AWS S3 ListBuckets.
      tags:
        - Buckets
      responses:
        "200":
          description: Successfully listed buckets
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/ListAllMyBucketsResult"
        "403":
          $ref: "#/components/responses/Forbidden"
  /{bucket}:
    parameters:
      - $ref: "#/components/parameters/bucket"
    put:
      operationId: createBucket
      summary: Create a bucket
      description: >-
        Creates a new S3-compatible bucket. Bucket names must be unique across
        all Filebase accounts. IPFS-backed buckets automatically pin all objects
        with 3x geo-redundant replication.
      tags:
        - Buckets
      responses:
        "200":
          description: Bucket created successfully
        "400":
          $ref: "#/components/responses/BadRequest"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
    delete:
      operationId: deleteBucket
      summary: Delete a bucket
      description: >-
        Deletes an empty bucket. The bucket must be empty before it can be deleted.
      tags:
        - Buckets
      responses:
        "204":
          description: Bucket deleted successfully
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
    head:
      operationId: headBucket
      summary: Check bucket existence and access
      description: >-
        Returns metadata about the bucket without returning the bucket's contents.
      tags:
        - Buckets
      responses:
        "200":
          description: Bucket exists and is accessible
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
    get:
      operationId: listObjects
      summary: List objects in a bucket
      description: >-
        Returns some or all (up to 1,000) of the objects in a bucket.
        Use list-type=2 for ListObjectsV2.
      tags:
        - Objects
      parameters:
        - name: prefix
          in: query
          description: Limits the response to keys that begin with the specified prefix
          schema:
            type: string
        - name: delimiter
          in: query
          description: A delimiter is a character you use to group keys
          schema:
            type: string
        - name: marker
          in: query
          description: Specifies the key to start with when listing objects
          schema:
            type: string
        - name: max-keys
          in: query
          description: Sets the maximum number of keys returned (default 1000)
          schema:
            type: integer
            maximum: 1000
            default: 1000
        - name: list-type
          in: query
          description: Version 2 of list objects request (set to 2)
          schema:
            type: integer
            enum: [2]
        - name: continuation-token
          in: query
          description: Indicates Amazon S3 that the list is being continued with a token (V2)
          schema:
            type: string
      responses:
        "200":
          description: Successfully listed objects
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/ListBucketResult"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
  /{bucket}/{key}:
    parameters:
      - $ref: "#/components/parameters/bucket"
      - $ref: "#/components/parameters/key"
    put:
      operationId: putObject
      summary: Upload an object
      description: >-
        Adds an object to a bucket. Objects are automatically pinned to IPFS
        for IPFS-backed buckets and receive 3x geo-redundant replication.
        The CID is returned in the x-amz-meta-cid response header.
      tags:
        - Objects
      parameters:
        - name: x-amz-meta-cid
          in: header
          description: IPFS CID of the uploaded object (response header)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        "200":
          description: Object uploaded successfully
          headers:
            ETag:
              description: Entity tag (MD5 hash) of the uploaded object
              schema:
                type: string
            x-amz-meta-cid:
              description: IPFS CID of the uploaded object
              schema:
                type: string
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
    get:
      operationId: getObject
      summary: Download an object
      description: >-
        Retrieves an object from Filebase. Returns the object data.
      tags:
        - Objects
      parameters:
        - name: Range
          in: header
          description: Downloads the specified range bytes of an object
          schema:
            type: string
      responses:
        "200":
          description: Object content
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
          headers:
            Content-Type:
              schema:
                type: string
            ETag:
              schema:
                type: string
            x-amz-meta-cid:
              description: IPFS CID of the object
              schema:
                type: string
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
    head:
      operationId: headObject
      summary: Get object metadata
      description: >-
        Retrieves metadata from an object without returning the object itself.
      tags:
        - Objects
      responses:
        "200":
          description: Object metadata
          headers:
            Content-Type:
              schema:
                type: string
            Content-Length:
              schema:
                type: integer
            ETag:
              schema:
                type: string
            x-amz-meta-cid:
              description: IPFS CID of the object
              schema:
                type: string
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
    delete:
      operationId: deleteObject
      summary: Delete an object
      description: >-
        Removes an object from a bucket.
      tags:
        - Objects
      responses:
        "204":
          description: Object deleted successfully
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
    copy:
      operationId: copyObject
      summary: Copy an object
      description: >-
        Creates a copy of an object that is already stored in Filebase.
      tags:
        - Objects
      parameters:
        - name: x-amz-copy-source
          in: header
          required: true
          description: Specifies the source bucket and key name (bucket/key)
          schema:
            type: string
      responses:
        "200":
          description: Object copied successfully
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/CopyObjectResult"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
  /{bucket}/{key}?uploads:
    parameters:
      - $ref: "#/components/parameters/bucket"
      - $ref: "#/components/parameters/key"
    post:
      operationId: createMultipartUpload
      summary: Initiate multipart upload
      description: >-
        Initiates a multipart upload and returns an upload ID. Use for large
        file uploads by splitting them into parts.
      tags:
        - Multipart Upload
      responses:
        "200":
          description: Multipart upload initiated
          content:
            application/xml:
              schema:
                $ref: "#/components/schemas/InitiateMultipartUploadResult"
        "403":
          $ref: "#/components/responses/Forbidden"
components:
  securitySchemes:
    AWS4Auth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        AWS Signature Version 4 (AWS4-HMAC-SHA256) with Filebase access key and
        secret key. Use endpoint s3.filebase.io and region us-east-1.
  parameters:
    bucket:
      name: bucket
      in: path
      required: true
      description: Name of the bucket
      schema:
        type: string
    key:
      name: key
      in: path
      required: true
      description: Object key (file path within the bucket)
      schema:
        type: string
  schemas:
    ListAllMyBucketsResult:
      type: object
      xml:
        name: ListAllMyBucketsResult
      properties:
        Owner:
          type: object
          properties:
            ID:
              type: string
            DisplayName:
              type: string
        Buckets:
          type: array
          items:
            type: object
            properties:
              Name:
                type: string
              CreationDate:
                type: string
                format: date-time
    ListBucketResult:
      type: object
      xml:
        name: ListBucketResult
      properties:
        Name:
          type: string
          description: Bucket name
        Prefix:
          type: string
          description: Limits the response to keys beginning with the specified prefix
        MaxKeys:
          type: integer
          description: Maximum number of keys returned
        IsTruncated:
          type: boolean
          description: Whether the results are truncated
        Contents:
          type: array
          items:
            type: object
            properties:
              Key:
                type: string
              LastModified:
                type: string
                format: date-time
              ETag:
                type: string
              Size:
                type: integer
                format: int64
              StorageClass:
                type: string
    CopyObjectResult:
      type: object
      xml:
        name: CopyObjectResult
      properties:
        LastModified:
          type: string
          format: date-time
        ETag:
          type: string
    InitiateMultipartUploadResult:
      type: object
      xml:
        name: InitiateMultipartUploadResult
      properties:
        Bucket:
          type: string
        Key:
          type: string
        UploadId:
          type: string
    Error:
      type: object
      xml:
        name: Error
      properties:
        Code:
          type: string
        Message:
          type: string
        Resource:
          type: string
        RequestId:
          type: string
  responses:
    BadRequest:
      description: Bad request
      content:
        application/xml:
          schema:
            $ref: "#/components/schemas/Error"
    Forbidden:
      description: Access denied
      content:
        application/xml:
          schema:
            $ref: "#/components/schemas/Error"
    NotFound:
      description: Resource not found
      content:
        application/xml:
          schema:
            $ref: "#/components/schemas/Error"
    Conflict:
      description: Conflict (bucket already exists or not empty)
      content:
        application/xml:
          schema:
            $ref: "#/components/schemas/Error"
tags:
  - name: Buckets
    description: Bucket creation, deletion, and listing
  - name: Objects
    description: Object upload, download, copy, delete, and metadata
  - name: Multipart Upload
    description: Large file multipart upload operations