DEV Community

Alex Spinov
Alex Spinov

Posted on

Render Has a Free API — Deploy Apps and Manage Services Programmatically

Heroku Alternative With an API

Render gives you free web services, databases, and cron jobs. Their API lets you manage deployments, scale services, and check logs programmatically.

Setup

import requests

API_KEY = "rnd_your_api_key"  # Dashboard > Account > API Keys
BASE = "https://api.render.com/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
Enter fullscreen mode Exit fullscreen mode

List Services

def list_services():
    r = requests.get(f"{BASE}/services", headers=HEADERS)
    return [{"name": s["service"]["name"], "id": s["service"]["id"],
             "status": s["service"]["suspended"], "url": s["service"].get("serviceDetails", {}).get("url")}
            for s in r.json()]

for s in list_services():
    print(f"{s[name]}{s[url]}")
Enter fullscreen mode Exit fullscreen mode

Trigger Deploy

def deploy(service_id):
    r = requests.post(f"{BASE}/services/{service_id}/deploys", headers=HEADERS)
    return r.json()

# Deploy after pushing code
deploy("srv-your-service-id")
Enter fullscreen mode Exit fullscreen mode

Get Deploy Logs

def get_deploys(service_id, limit=5):
    r = requests.get(f"{BASE}/services/{service_id}/deploys",
                     headers=HEADERS, params={"limit": limit})
    return [{"id": d["deploy"]["id"], "status": d["deploy"]["status"],
             "created": d["deploy"]["createdAt"]}
            for d in r.json()]

for d in get_deploys("srv-id"):
    print(f"{d[created][:16]}{d[status]}")
Enter fullscreen mode Exit fullscreen mode

Scale Service

def scale(service_id, num_instances):
    r = requests.patch(f"{BASE}/services/{service_id}/scale",
                       headers=HEADERS,
                       json={"numInstances": num_instances})
    return r.status_code == 200
Enter fullscreen mode Exit fullscreen mode

Free Tier

  • 750 hours/month web services
  • 100GB bandwidth/month
  • Auto-deploy from GitHub
  • Free PostgreSQL (90 days)
  • Free Redis (25MB)
  • Cron jobs

More | GitHub


Need custom dev tools, scrapers, or API integrations? I build automation for dev teams. Email spinov001@gmail.com — or explore awesome-web-scraping.


More from me: 10 Dev Tools I Use Daily | 77 Scrapers on a Schedule | 150+ Free APIs

Top comments (0)