fshy

Home / Google

Google Photos Library API (append-only upload)

developers.google.com/photos/library/guides/upload-mediaMediastorage/google-photos-library-apiJSONcomparereport an errorprovider JSON

Free allowance
No quota of its own — but every item uploaded counts against the user's Google Account storage at original quality.
Verdict
fails: quotathe free allowance is too small to matter
Cost
free tier
Identity
institutionno card, no phone
Binding limit
noneno named constraint binds
Evidence
reported2 sources; a third party said so
Freshness
stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
Free tierNo quota of its own — but every item uploaded counts against the user's Google Account storage at original quality. 200 MB max per photo, 20 GB max per video.
unit GB; metered on stored-bytes
Pricenone stated
Identityinstitution not published
EgressMedia bytes served via baseUrl, 75,000 requests/project/day; no documented per-GB charge but the underlying storage is metered.
Per-object capnot stated
Retentionnot stated
Interfacerest, rclone rest
ToolingPhotos Library API (photoslibrary.appendonly scope), uploads endpoint + batchCreate; no rclone backend. Unofficial wrappers are thin.
Composes with20 GB per video x N videos is the only interesting shape, but it does NOT escape the 15 GB account quota — this is billing-avoidance-free. Not a multiplier, a quota consumption path.
ReliabilityAPI uploads skip the 'Storage saver' free-compression path, so they consume quota fastest of any Google surface. Strictly worse than Drive for bulk data.
Evidence 2
datesourcewhat it proved
2026-10-21developers.google.com/photos/library/guides/upload-media'All uploads are stored at original quality, counting towards the user's Google Account storage if they exceed 25MB per user' + max 200 MB photo / 20 GB video
2026-10-21developers.google.com/photos/overview/api-limits-quotas'The quota limit for requests to the Library API is 10,000 requests per project per day'; media bytes 75,000/day
More fields 1
{
 "dead_end": {
  "failure_class": "quota",
  "why": "No quota of its own — but every item uploaded counts against the user's Google Account storage at original quality. 200 MB max per photo, 20 GB max per video.",
  "retry_when": null,
  "first_recorded": "2026-10-21"
 }
}
Unknown values 6
  • $.binding_note boilerplate
  • $.identity_cost.detail boilerplate
  • $.per_object_cap.notes the field may be stated in a source that was not read
  • $.per_object_cap.stated the field may be stated in a source that was not read
  • $.retention.notes the field may be stated in a source that was not read
  • $.retention.stated the field may be stated in a source that was not read