/projects/{project_id}/branches/{branch_id}/buckets/{bucket_name}/objects/{object_key}/downloadbetaDownload an object's bytes
Streams the raw bytes of the named object from the bucket on the specified branch, including objects inherited from ancestor branches. Served by the user's session (no customer S3 credentials required).
The body is returned as application/octet-stream so a browser treats
it as a download; the Content-Length and ETag response headers echo
the stored object metadata.
BINARY-STREAM EXCEPTION TO THE BUILD-GENERATED-TYPES RULE (#7029): the
successful 200 body is the raw object stream, proxied verbatim from the
platform storage admin endpoint. It is modeled as an
application/octet-stream binary body (not a JSON response schema) and
is streamed without buffering the whole object in memory. Error
responses still use the generated GeneralError shape.
Note: This endpoint is currently in Private Beta.
Quick start
curl "https://console.neon.tech/api/v2/projects/$PROJECT_ID/branches/$BRANCH_ID/buckets/$BUCKET_NAME/objects/$OBJECT_KEY/download" \
-H "Authorization: Bearer $NEON_API_KEY"Every field below is optional. An empty body works too.
import { createNeonClient, raw } from '@neon/sdk';
const neon = createNeonClient({ apiKey: process.env.NEON_API_KEY });
const { data } = await raw.getProjectBranchBucketObject({
client: neon.client,
path: {
project_id: process.env.PROJECT_ID,
branch_id: process.env.BRANCH_ID,
bucket_name: process.env.BUCKET_NAME,
object_key: process.env.OBJECT_KEY
}
});Parameters
project_idThe Neon project ID
branch_idThe Neon branch ID
bucket_nameThe bucket name
object_keyThe object key. Keys may contain /; the / characters of nested
keys must be percent-encoded (%2F) in the path segment.
Response
200The object's raw bytes, streamed verbatim. Content-Length and
ETag headers are set from the stored object metadata;
X-Content-Type-Options and Content-Disposition harden the
browser against the caller-controlled bytes.
No example available.
Errors
Object not found
General error
This endpoint can return the standard Neon API error response.
Response fields
messageRequired. Human-readable error message.codeRequired. Machine-readable error code.request_idOptional. Request identifier for debugging. You can provide one with theX-Request-IDheader.
Retry guidance
If no response is returned, the request may still have reached the server. This is why retry safety depends on the method and status code.
Idempotent methods (GET, HEAD, OPTIONS) are generally safe to retry after a network error or timeout. Non-idempotent methods (POST, PATCH, DELETE, PUT) can change state, so avoid automatic retries unless your workflow can tolerate duplicate effects.
Responses with 423 Locked or 503 Service Unavailable are safe to retry. 423 Locked means the resource is temporarily locked, usually because another operation is in progress.








