Pinax
    Iceberg REST · Delta Lake · Parquet
    Resources & endpoints

    Presigned download URLs

    An additional way to read a file, alongside a signed S3 client (see Connect with S3, the default). Create a short-lived link to one dataset object using your Pinax Project ID and API key. The recipient can download it without receiving your API key. Each use counts toward the signing project's team usage.

    One object, read-only

    GET downloads and byte ranges are supported. HEAD needs a separately signed URL. Listings and writes cannot be presigned.

    Five-minute examples

    Use a short expiry. The gateway accepts at most one hour; an expired link must be regenerated.

    Your project pays

    A link can be reused until it expires. Anyone holding it can read that object against your team’s usage and request limits.

    Download from the App

    Choose a project, browse a table and open an active file. Create a download link from the file page, check its size and estimated cost, then download directly from S3. The App rechecks the current Delta snapshot before signing; that metadata read also counts toward your usage. An incomplete or unreplayable snapshot cannot authorize a download.

    Browse datasets

    Generate a URL in your own client

    Run these examples locally or on your server. Set PINAX_OBJECT_KEY to an active file selected through the Delta log, not a file found by globbing a date folder. Signing itself makes no S3 read; using the link does.

    Loading your project… Run the commented export line before the example, in a private shell without command logging.

    AWS CLI presigned URL example

    Read-only · 300 seconds · Path-style S3
    1# export PINAX_PROJECT_ID='<your Pinax Project ID>' PINAX_API_KEY='<your Pinax API key>'
    2set +x # Keep credentials and generated links out of shell tracing.
    3# Set PINAX_OBJECT_KEY to a file selected from the current Delta snapshot.
    4# Example shape: blocks/date=2020-01-01/<active-file>.parquet
    5: "${PINAX_OBJECT_KEY:?Set the active object key}"
    6export AWS_ACCESS_KEY_ID="${PINAX_PROJECT_ID:?Set your Project ID}"
    7export AWS_SECRET_ACCESS_KEY="${PINAX_API_KEY:?Set your API key}"
    8unset AWS_SESSION_TOKEN AWS_SECURITY_TOKEN
    9export AWS_PROFILE=pinax-download
    10aws configure set profile.pinax-download.s3.addressing_style path
    11
    12# Signing is local. The URL permits GET for this object for five minutes.
    13DOWNLOAD_URL="$(aws s3 presign "s3://eth/$PINAX_OBJECT_KEY" \
    14 --endpoint-url 'https://datasets.s3.pinax.network' \
    15 --region 'us-east-1' --expires-in 300)"
    16
    17# This request reads data and bills the signing project's team.
    18curl --fail --output ./dataset.parquet "$DOWNLOAD_URL"
    19unset DOWNLOAD_URL
    20# Do not use curl -I with a GET URL: HEAD requires its own signature.
    21# Keep URLs private and out of logs; anyone holding one can reuse it until expiry.

    Using and sharing a link

    • Open the link as a normal browser navigation or download. Browser fetch and cross-origin JavaScript access still require CORS, which this endpoint does not provide.
    • Keep the complete URL private and out of logs and analytics. Browsers may retain it in history or download records. Links should use referrerPolicy="no-referrer".
    • The method, host, object path and signed parameters must stay unchanged. A GET URL will not authorize HEAD; use the separate HEAD example.
    • Invalidating the signing API key can take up to five minutes to revoke a link. Expiry is not a one-time-use limit.
    • Interrupted downloads can still be billed for bytes already sent, including bytes buffered in transit. Regenerate an expired link to retry.

    SDK references: AWS CLI, boto3, and AWS SDK for JavaScript v3. Pinax's read-only operations and one-hour expiry cap apply.