Goatlab API Docs

Get upload URL for a space

GET
/v1/spaces/{spaceId}/files/upload-url

Generates a pre-signed URL that can be used to upload a file directly to the space's storage. The URL is temporary and will expire after a set period.

Access Control:

Access to upload files to a space depends on your permissions and the space's visibility:

  • Private Spaces: Only accessible by the space owner
  • Public Spaces: Accessible by all users within the same tenant

Upload Process:

  1. Call this endpoint to get a pre-signed URL and file ID
  2. Use the returned URL to upload the file directly to storage via PUT request
  3. The file will be automatically processed after upload

Authorization

ApiTokenAuth PRODUCT
x-api-key<token>

API Key with role based permission

In: header

Scope: PRODUCT

Path Parameters

spaceId*string

The unique identifier of the space to upload the file to

Query Parameters

filename*string

The name of the file to upload, including the file extension

persist?string

Whether the file should persist beyond 24 hours. If false or not provided, the file will be automatically deleted after 24 hours

testing?string

Uses the testing processing pipeline, intended for the Files team internal usage. Use it under your own risk and assuming it may cause unstable behaviour. Development only — this parameter is rejected with 400 Bad Request when the API is running in production. Only available in non-production environments.

Header Parameters

x-user-id*string

The ID of the user requesting the upload URL

x-tenant-id*string

The ID of the tenant

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/spaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/files/upload-url?filename=string" \  -H "x-user-id: string" \  -H "x-tenant-id: string"
{
  "url": "https://s3.amazonaws.com/bucket/path/file.pdf?X-Amz-Signature=...",
  "expires_in": 3600,
  "file_id": "123e4567-e89b-12d3-a456-426614174000",
  "file_limits": {
    "max_size": 52428800,
    "allowed_types": [
      "text/csv",
      "text/plain",
      "text/markdown",
      "text/html",
      "application/pdf",
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
      "application/vnd.openxmlformats-officedocument.presentationml.presentation"
    ]
  }
}
{
  "message": "Invalid parameters"
}
{
  "message": "Invalid API Key"
}
{
  "message": "Space not found"
}
{
  "message": "Internal Server Error"
}