Goatlab API Docs

Get upload URL

GET
/v1/signed-url

This endpoint provides a pre-signed URL for uploading files to S3. The URL is valid for a limited time and can be used to upload files directly to S3 without going through the API server. You can also specify through query if the file should be persisted after being consumed. You must indicate the user that you are using in the headers of the request.

  • The expiration of the pre-signed URL is set to 10 minutes by default, but can be adjusted to be between 1 minute and 7 days.
  • The file size is set to 10 MB by default, but can be adjusted to other values.
  • The supported file types are limited to plain text, Markdown, CSVs, PDFs, and modern Office formats (.docx, .xlsx and .pptx), but can be extended to other types if needed.

All the limitations are informed in the response, so the client can adjust the upload accordingly. In order to call the returned signed URL, you need to provide a multipart/form-data request with the file data.

Authorization

ApiTokenAuth PRODUCT
x-api-key<token>

API Key with role based permission

In: header

Scope: PRODUCT

Query Parameters

persist?boolean

Whether to persist the file after being consumed

testing?string

Marks the uploaded file as a testing artifact, bypassing standard processing pipelines.

Development only — this parameter is rejected with 400 Bad Request when the API is running in production. It is intended for development and testing environments only.

filename*string

The name of the file to upload with its extension

Header Parameters

x-user-id*string

The ID of the user requesting the signed URL

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/signed-url?filename=string" \  -H "x-user-id: string"
{
  "url": "https://example-bucket.s3.amazonaws.com/example-file.txt",
  "expires_in": 600,
  "file_id": "123e4567-e89b-12d3-a456-426614174000",
  "file_limits": {
    "max_size": 10485760,
    "allowed_types": [
      "text/csv",
      "text/plain",
      "text/markdown",
      "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": "Internal Server Error"
}