{% extends "docs/base.html" %} {% block docs_content %}
Create, inspect, update, delete, and download repo-scoped file uploads.
GET /api/v1/teams/{team_slug}/repos/{repo_slug}/uploads
GET /api/v1/users/{username}/repos/{repo_slug}/uploads
POST /api/v1/teams/{team_slug}/repos/{repo_slug}/uploads
POST /api/v1/users/{username}/repos/{repo_slug}/uploads
GET /api/v1/teams/{team_slug}/repos/{repo_slug}/uploads/{upload_uuid}
GET /api/v1/users/{username}/repos/{repo_slug}/uploads/{upload_uuid}
PUT /api/v1/teams/{team_slug}/repos/{repo_slug}/uploads/{upload_uuid}
PUT /api/v1/users/{username}/repos/{repo_slug}/uploads/{upload_uuid}
DELETE /api/v1/teams/{team_slug}/repos/{repo_slug}/uploads/{upload_uuid}
DELETE /api/v1/users/{username}/repos/{repo_slug}/uploads/{upload_uuid}
GET /api/v1/teams/{team_slug}/repos/{repo_slug}/uploads/{upload_uuid}/content/{filename}
GET /api/v1/users/{username}/repos/{repo_slug}/uploads/{upload_uuid}/content/{filename}
GET|POST /api/v1/teams/{team_slug}/repos/{repo_slug}/upload-groups
GET|POST /api/v1/users/{username}/repos/{repo_slug}/upload-groups
GET|PUT /api/v1/teams/{team_slug}/repos/{repo_slug}/upload-groups/{group_uuid}
GET|PUT /api/v1/users/{username}/repos/{repo_slug}/upload-groups/{group_uuid}
Download URLs include the original filename as the final path segment, for example
/api/v1/teams/{team_slug}/repos/{repo_slug}/uploads/{upload_uuid}/content/openapi.json.
Send two or more repeated file parts to the /upload-groups collection. Optional name and description fields describe the group; an omitted name is derived from the first filename.
curl --request POST \
--header "Authorization: Bearer $PEARING_API_TOKEN" \
--form "file=@./before.png" \
--form "file=@./after.png" \
--form "name=Before and after" \
"$PEARING_API_URL/v1/teams/platform/repos/website/upload-groups"
Group creation is all-or-nothing and preserves multipart order. The configured member-count, aggregate-size, and per-file limits apply. Responses contain group metadata plus ordered normal upload resources; each member keeps its own UUID and content URL.
Uploads are sent as multipart/form-data with these fields:
file (required): the binary file partdescription (optional): free-form description textcontent_type (optional): declared content type; the server normalizes it with magic-byte sniffingThe server stores uploads under repo and file UUID buckets and derives the file extension itself.
curl --request POST \
--header "Authorization: Bearer $PEARING_API_TOKEN" \
--form "file=@./screenshot.png" \
--form "description=Build screenshot" \
"$PEARING_API_URL/v1/teams/platform/repos/website/uploads"
403 Forbidden when the caller cannot manage uploads in the repo.404 Not Found when the repo or upload does not exist.400 Bad Request for malformed multipart payloads.413 Payload Too Large when the upload exceeds the maximum file size.