> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Test OCI Bucket

> Verify that an OCI bucket configuration works, by uploading a small test file (`daily-co-test-upload.txt`) to it through the OCI S3 compatibility API.

Unlike S3 buckets, an OCI bucket configuration is **not** checked when you set it — the `Admit` policy may not have propagated yet (see the [custom OCI storage guide](/docs/guides/features/recording/custom-oci-storage)). Setting the property therefore succeeds even when the bucket is not usable, and this endpoint is how you confirm the setup before relying on it.

Only OCI buckets can be tested. Calling this against a bucket whose `storage_provider` is `aws` returns a `400`.

On success the response echoes the tested configuration under a key matching the `property` query parameter — `recordings_bucket` by default, or `transcription_bucket`. A `download_link` and `expires` are returned only when the configuration has `allow_api_access` set to `true`; the link is valid for one hour. Storage credentials are never included in the response.



## OpenAPI

````yaml GET /recordings/test-oci-bucket
openapi: 3.0.3
info:
  title: Daily API
  description: |-
    The Daily REST API offers the ability to manage the following: 
    - Overall Domain Configuration
    - Individual Room creation and config management 
    - Meeting token creation and validation
    - Recording and compositing management 
    - Meeting analytics
    - Logs and metrics
    - Real-time presence

    Please reach out to help@daily.co if we can help with anything
  version: 1.1.1
  contact:
    name: Daily
    url: https://docs.daily.co
    email: help@daily.co
servers:
  - url: https://api.daily.co/v1
security:
  - bearerAuth: []
paths:
  /recordings/test-oci-bucket:
    get:
      tags:
        - recordings
      summary: /recordings/test-oci-bucket
      description: >-
        Verify that an OCI bucket configuration works, by uploading a small test
        file (`daily-co-test-upload.txt`) to it through the OCI S3 compatibility
        API.


        Unlike S3 buckets, an OCI bucket configuration is **not** checked when
        you set it — the `Admit` policy may not have propagated yet (see the
        [custom OCI storage
        guide](/docs/guides/features/recording/custom-oci-storage)). Setting the
        property therefore succeeds even when the bucket is not usable, and this
        endpoint is how you confirm the setup before relying on it.


        Only OCI buckets can be tested. Calling this against a bucket whose
        `storage_provider` is `aws` returns a `400`.


        On success the response echoes the tested configuration under a key
        matching the `property` query parameter — `recordings_bucket` by
        default, or `transcription_bucket`. A `download_link` and `expires` are
        returned only when the configuration has `allow_api_access` set to
        `true`; the link is valid for one hour. Storage credentials are never
        included in the response.
      operationId: TestOciBucket
      parameters:
        - name: property
          in: query
          required: false
          style: form
          explode: true
          description: Which bucket property to test. Defaults to `recordings_bucket`.
          schema:
            type: string
            enum:
              - recordings_bucket
              - transcription_bucket
            default: recordings_bucket
        - name: roomName
          in: query
          required: false
          style: form
          explode: true
          description: >-
            Test the property set on this room instead of the domain-level
            property. There is no fallback to the domain configuration: if the
            room does not set the property, the request returns a `400`.
          schema:
            type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  recordings_bucket:
                    allOf:
                      - $ref: '#/components/schemas/recordings_bucket'
                    description: >-
                      The configuration that was tested. Returned **only** when
                      `property` is `recordings_bucket` (the default). Exactly
                      one of `recordings_bucket` or `transcription_bucket` is
                      present in a response, never both.
                  transcription_bucket:
                    allOf:
                      - $ref: '#/components/schemas/transcription_bucket'
                    description: >-
                      The configuration that was tested. Returned **only** when
                      `property` is `transcription_bucket`. Exactly one of
                      `recordings_bucket` or `transcription_bucket` is present
                      in a response, never both.
                  test_file_key:
                    type: string
                    description: The object key of the test file written to your bucket.
                    example: daily-co-test-upload.txt
                  download_link:
                    type: string
                    description: >-
                      A presigned link to the test file, valid for one hour.
                      Only a real link when `allow_api_access` is `true`;
                      otherwise a short string explaining that no link was
                      generated.
                    example: >-
                      https://axaxnpcrorw5.compat.objectstorage.us-ashburn-1.oraclecloud.com/my-daily-recordings/daily-co-test-upload.txt?...
                  expires:
                    type: integer
                    description: >-
                      When `download_link` expires, as a unix timestamp.
                      Returned only when `allow_api_access` is `true`.
                    example: 1787234330
              examples:
                Result:
                  value:
                    success: true
                    recordings_bucket:
                      storage_provider: oci
                      namespace: axaxnpcrorw5
                      bucket_region: eu-frankfurt-1
                      bucket_name: my-daily-recordings
                      allow_api_access: true
                      allow_streaming_from_bucket: false
                    test_file_key: daily-co-test-upload.txt
                    download_link: >-
                      https://axaxnpcrorw5.compat.objectstorage.eu-frankfurt-1.oraclecloud.com/my-daily-recordings/daily-co-test-upload.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%3Credacted%3E%2F20260820%2Feu-frankfurt-1%2Fs3%2Faws4_request&X-Amz-Date=20260820T125850Z&X-Amz-Expires=3600&X-Amz-Signature=%3Credacted%3E&X-Amz-SignedHeaders=host
                    expires: 1787234330
        '400':
          $ref: '#/components/responses/400'
        '404':
          description: 404 — the room named by `roomName` does not exist in this domain.
      deprecated: false
      security:
        - bearerAuth: []
components:
  schemas:
    recordings_bucket:
      type: object
      description: >-
        Configures an S3 bucket in which to store recordings.

        See the [S3 bucket
        guide](/guides/products/live-streaming-recording/storing-recordings-in-a-custom-s3-bucket)
        for more information.


        Properties:


        Supports both Amazon S3 and OCI Object Storage; select with
        `storage_provider`. See the [custom OCI storage
        guide](/docs/guides/features/recording/custom-oci-storage) for the OCI
        setup process.
      properties:
        storage_provider:
          type: string
          enum:
            - aws
            - oci
          default: aws
          description: >-
            Which storage provider the bucket belongs to. Defaults to `aws` when
            omitted, so existing configurations are unaffected. Set to `oci` to
            store recordings in an Oracle Cloud Infrastructure Object Storage
            bucket — see the [custom OCI storage
            guide](/docs/guides/features/recording/custom-oci-storage). OCI
            buckets are not self-serve: Daily must provision credentials for
            your domain first.
          example: aws
        bucket_name:
          type: string
          description: The name of the Amazon S3 bucket to use for recording storage.
          example: my-daily-recording
        bucket_region:
          type: string
          description: >-
            The region which the specified S3 bucket is located in. When
            `storage_provider` is `oci` this must be an OCI region such as
            `us-ashburn-1`, not an AWS region.
          example: ap-south-1
        namespace:
          type: string
          description: >-
            **OCI only.** Your OCI Object Storage namespace. Required when
            `storage_provider` is `oci`, and rejected when it is `aws`. Find it
            in the OCI Console under Tenancy details.
          example: axaxnpcrorw5
        assume_role_arn:
          type: string
          description: >-
            **AWS only.** The Amazon Resource Name (ARN) of the role Daily
            should assume when storing the recording in the specified bucket.
            Required when `storage_provider` is `aws`, and rejected when it is
            `oci`.
          example: arn:aws:iam::555555555555:role/DailyS3AccessRole
        allow_api_access:
          type: boolean
          description: Controls whether the recording will be accessible using Daily's API.
        allow_streaming_from_bucket:
          type: boolean
          description: >-
            Specifies which
            [`Content-Disposition`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition)
            response header the recording link retrieved from the
            [access-link](/products/rest-api/recordings/get-recording-link) REST
            API endpoint will have. If `allow_streaming_from_bucket` is `false`,
            the header will be `Content-Dispostion: attachment`. If
            `allow_streaming_from_bucket` is `true`, the header will be
            `Content-Disposition: inline`.

            To play the recording link directly in the browser or embed it in a
            video player, set this property to `true`. Defaults to `false`
    transcription_bucket:
      type: object
      description: >-
        Configures an S3 bucket in which to store transcriptions.

        See the [S3 bucket
        guide](/guides/products/live-streaming-recording/storing-recordings-in-a-custom-s3-bucket)
        for more information.


        Supports both Amazon S3 and OCI Object Storage; select with
        `storage_provider`. See the [custom OCI storage
        guide](/docs/guides/features/recording/custom-oci-storage) for the OCI
        setup process.
      properties:
        storage_provider:
          type: string
          enum:
            - aws
            - oci
          default: aws
          description: >-
            Which storage provider the bucket belongs to. Defaults to `aws` when
            omitted, so existing configurations are unaffected. Set to `oci` to
            store transcriptions in an Oracle Cloud Infrastructure Object
            Storage bucket — see the [custom OCI storage
            guide](/docs/guides/features/recording/custom-oci-storage). OCI
            buckets are not self-serve: Daily must provision credentials for
            your domain first.
          example: aws
        bucket_name:
          type: string
          description: The name of the Amazon S3 bucket to use for transcription storage.
          example: my-daily-recording
        bucket_region:
          type: string
          description: >-
            The region which the specified S3 bucket is located in. When
            `storage_provider` is `oci` this must be an OCI region such as
            `us-ashburn-1`, not an AWS region.
          example: ap-south-1
        namespace:
          type: string
          description: >-
            **OCI only.** Your OCI Object Storage namespace. Required when
            `storage_provider` is `oci`, and rejected when it is `aws`. Find it
            in the OCI Console under Tenancy details.
          example: axaxnpcrorw5
        assume_role_arn:
          type: string
          description: >-
            **AWS only.** The Amazon Resource Name (ARN) of the role Daily
            should assume when storing the transcription in the specified
            bucket. Required when `storage_provider` is `aws`, and rejected when
            it is `oci`.
          example: arn:aws:iam::555555555555:role/DailyS3AccessRole
        allow_api_access:
          type: boolean
          description: Whether the transcription should be accessible using Daily's API.
  responses:
    '400':
      description: '400'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              info:
                type: string
          examples:
            Result:
              value:
                error: invalid-request-error
                info: missing required field
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````