0Pricing
R Academy · Lesson

Consuming REST APIs in R

Authenticate with API keys, paginate results, and store API responses.

REST API Concepts

REST APIs use HTTP methods (GET, POST, PUT, DELETE) on resource URLs. Responses are typically JSON. APIs may require authentication, handle pagination, and enforce rate limits. A good R API client handles all three.

library(httr2)

# REST API anatomy:
# Base URL:  https://api.example.com/v1
# Resources: /users, /products, /orders
# Methods:
#   GET    /users       -> list users
#   POST   /users       -> create user
#   GET    /users/42    -> get user 42
#   PUT    /users/42    -> update user 42
#   DELETE /users/42    -> delete user 42

# Query parameters for filtering/pagination:
# GET /users?page=2&size=20&sort=name

cat('REST = stateless + resource-based + HTTP methods')

Bearer Token Authentication

Most modern APIs use Bearer tokens (OAuth 2.0). Store the token in an environment variable with Sys.setenv() or in a .Renviron file. Never hardcode tokens in scripts.

library(httr2)

# Store token securely in .Renviron:
# GITHUB_PAT=ghp_your_token_here

# Access at runtime:
token <- Sys.getenv('GITHUB_PAT')
if (nchar(token) == 0) token <- 'demo_token'

# Use in requests:
# resp <- request('https://api.github.com/user') |>
#   req_auth_bearer_token(token) |>
#   req_headers('Accept' = 'application/vnd.github.v3+json') |>
#   req_perform() |>
#   resp_check_status()

# result <- resp_body_json(resp)
# result$login  # your GitHub username
cat('Token from env:', if(nchar(token)>0) 'found' else 'missing')

All lessons in this course

  1. Parsing JSON with jsonlite
  2. Making HTTP Requests with httr2
  3. Consuming REST APIs in R
  4. Handling Nested JSON Structures
← Back to R Academy