Skip to content

HTTP Reference

Fresh -- Updated March 2026 from official Google Cloud documentation.

Quick reference for HTTP methods, headers, content types, and protocol details used with Google Cloud APIs.

HTTP Methods

MethodSafeIdempotentRequest BodyUse
GETYesYesNoRetrieve a resource or list
POSTNoNoYesCreate a resource or custom method
PUTNoYesYesFull resource replacement
PATCHNoNoYesPartial resource update
DELETENoYesNoRemove a resource

Safe: Does not modify server state. Idempotent: Multiple identical requests have the same effect as a single request.

Request Headers

HeaderValueRequiredPurpose
AuthorizationBearer ACCESS_TOKENYes (most APIs)Authentication
Content-Typeapplication/jsonYes (POST/PUT/PATCH)Request body format
Acceptapplication/jsonOptionalResponse format
X-HTTP-Method-OverrideGETWhen neededOverride POST to GET (long URLs)
x-goog-request-paramsrouting paramsAuto (gRPC)Request routing
x-goog-user-projectPROJECT_IDOptionalBilling project override

Long URL Workaround

When a URL exceeds 16KB (e.g., complex filters), use POST with method override:

bash
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-HTTP-Method-Override: GET" \
  -d '{"filter": "very long filter expression..."}' \
  "https://SERVICE.googleapis.com/v1/RESOURCE"

Content Types

Content TypeUse
application/jsonStandard REST/JSON (most common)
application/x-protobufProtocol Buffers binary
multipart/relatedFile uploads with metadata
application/octet-streamRaw binary data

Response Format

Success (200/201):

json
{
  "name": "projects/my-project/topics/my-topic",
  "labels": {},
  "messageStoragePolicy": {},
  "schemaSettings": {}
}

Error (4xx/5xx):

json
{
  "error": {
    "code": 403,
    "status": "PERMISSION_DENIED",
    "message": "The caller does not have permission",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "IAM_PERMISSION_DENIED",
        "domain": "googleapis.com",
        "metadata": {
          "permission": "pubsub.topics.create"
        }
      }
    ]
  }
}

HTTP Versions

VersionFeaturesGCP Support
HTTP/1.1Standard, text-basedFull
HTTP/2Multiplexing, header compression, server pushFull (default for gRPC)
HTTP/3 (QUIC)UDP-based, lower latencyAvailable on some services

Streaming

TypeDescriptionUse Case
Server-side streamingServer sends multiple responsesLong-running reads, log tailing
Client-side streamingClient sends multiple requestsBulk uploads
Bidirectional streamingBoth sides stream simultaneouslyReal-time communication

TIP

REST/JSON APIs support server-side streaming. Full bidirectional streaming requires gRPC.

URL Structure

https://{service}.googleapis.com/{version}/{resource_name}?{query_params}

Examples:

ServiceURL
Cloud Storagehttps://storage.googleapis.com/storage/v1/b/my-bucket
Pub/Subhttps://pubsub.googleapis.com/v1/projects/my-project/topics/my-topic
BigQueryhttps://bigquery.googleapis.com/bigquery/v2/projects/my-project/datasets
Compute Enginehttps://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances

Common Query Parameters

ParameterTypeUse
pageSizeintMax results per page
pageTokenstringPagination cursor
filterstringResult filtering
orderBystringSort order
fieldsstringPartial response (field mask)
keystringAPI key authentication
altstringResponse format (json, media, proto)

Partial Responses

Reduce response size by requesting only specific fields:

bash
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/my-bucket?fields=name,location,storageClass"

See Also