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

# Generate Signed Url

> Generate a signed read URL or signed upload policy for a storage object.

Requires ADMIN scope because the URL grants direct storage-object access.
The ``env`` query parameter selects between the dev and prod buckets that
Stage 1 provisions per managed service. Defaults to ``dev`` for callers
that haven't been updated to pass the parameter explicitly.



## OpenAPI

````yaml https://api.getfloo.com/openapi.json post /v1/apps/{app_id}/managed-services/{service_id}/signed-url
openapi: 3.1.0
info:
  title: floo API
  version: 0.1.0
servers:
  - url: https://api.getfloo.com
security: []
paths:
  /v1/apps/{app_id}/managed-services/{service_id}/signed-url:
    post:
      tags:
        - managed-services
      summary: Generate Signed Url
      description: >-
        Generate a signed read URL or signed upload policy for a storage object.


        Requires ADMIN scope because the URL grants direct storage-object
        access.

        The ``env`` query parameter selects between the dev and prod buckets
        that

        Stage 1 provisions per managed service. Defaults to ``dev`` for callers

        that haven't been updated to pass the parameter explicitly.
      operationId: managed_services_generate_signed_url
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: App Id
        - name: service_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Service Id
        - name: env
          in: query
          required: false
          schema:
            type: string
            pattern: ^(dev|prod|preview)$
            default: dev
            title: Env
        - name: preview
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Preview
        - $ref: '#/components/parameters/X-Floo-Org-Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignedUrlRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignedUrlResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  parameters:
    X-Floo-Org-Id:
      name: X-Floo-Org-Id
      in: header
      required: false
      schema:
        type: string
        format: uuid
      description: Organization to act in; defaults to the one joined most recently.
  schemas:
    SignedUrlRequest:
      properties:
        object_path:
          type: string
          maxLength: 1024
          minLength: 1
          title: Object Path
          description: >-
            Object path within the bucket (1-1024 characters; no leading slash,
            backslash, control characters, or empty, '.' or '..' segments).
            PUT/POST paths must start with 'uploads/'.
        method:
          type: string
          enum:
            - GET
            - PUT
            - POST
          title: Method
          description: >-
            Access method. GET returns a signed URL; PUT/POST returns a signed
            POST upload policy.
          default: GET
        expiration_seconds:
          type: integer
          maximum: 3600
          minimum: 60
          title: Expiration Seconds
          description: >-
            Expiration in seconds (60-3600 for GET; 60-900 for PUT/POST).
            Default: 900.
          default: 900
        content_type:
          anyOf:
            - type: string
              maxLength: 255
            - type: 'null'
          title: Content Type
          description: >-
            Required for PUT/POST; at most 255 characters and no control
            characters.
        max_bytes:
          anyOf:
            - type: integer
              maximum: 104857600
              minimum: 1
            - type: 'null'
          title: Max Bytes
          description: >-
            Only valid for PUT/POST upload policies; 1-104857600 bytes (100
            MiB). Defaults to 10485760 bytes (10 MiB).
      type: object
      required:
        - object_path
      title: SignedUrlRequest
      description: Request body for generating a signed URL.
    SignedUrlResponse:
      properties:
        url:
          type: string
          minLength: 1
          title: Url
        method:
          type: string
          enum:
            - GET
            - POST
          title: Method
        expires_in_seconds:
          type: integer
          minimum: 0
          title: Expires In Seconds
        object_path:
          type: string
          minLength: 1
          title: Object Path
        bucket:
          type: string
          minLength: 1
          title: Bucket
        fields:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Fields
        max_bytes:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Max Bytes
      type: object
      required:
        - url
        - method
        - expires_in_seconds
        - object_path
        - bucket
      title: SignedUrlResponse
      description: Response for a generated signed URL.
    ErrorResponse:
      properties:
        detail:
          $ref: '#/components/schemas/ErrorDetail'
      type: object
      required:
        - detail
      title: ErrorResponse
      description: Body of every error response except request validation (422).
    ErrorDetail:
      properties:
        code:
          type: string
          title: Code
        message:
          type: string
          title: Message
      additionalProperties: true
      type: object
      required:
        - code
        - message
      title: ErrorDetail
      description: Standard error envelope with operation-specific JSON context.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: A `floo_` API key.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.