runpod 1.11.0


pip install runpod

  Latest version

Released: Jul 21, 2026


Meta
Author: Runpod
Requires Python: >=3.10

Classifiers

Environment
  • Web Environment

Intended Audience
  • Developers

License
  • OSI Approved :: MIT License

Operating System
  • OS Independent

Programming Language
  • Python
  • Python :: 3
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: 3.14

Topic
  • Internet :: WWW/HTTP
  • Internet :: WWW/HTTP :: Dynamic Content

Runpod | Python Library

PyPI Package   Downloads

CI | End-to-End Runpod Python Tests

CI | Unit Tests   CI | CodeQL

Welcome to the official Python library for Runpod API & SDK.

Table of Contents

๐Ÿ’ป | Installation

Install from PyPI (Stable Release)

# Install with pip
pip install runpod

# Install with uv (faster alternative)
uv add runpod

Install from GitHub (Latest Changes)

To get the latest changes that haven't been released to PyPI yet:

# Install latest development version from main branch with pip
pip install git+https://github.com/runpod/runpod-python.git

# Install with uv
uv add git+https://github.com/runpod/runpod-python.git

# Install a specific branch
pip install git+https://github.com/runpod/runpod-python.git@branch-name

# Install a specific tag/release
pip install git+https://github.com/runpod/runpod-python.git@v1.0.0

# Install in editable mode for development
git clone https://github.com/runpod/runpod-python.git
cd runpod-python
pip install -e .

Python 3.10 or higher is required to use the latest version of this package.

โšก | Serverless Worker (SDK)

This python package can also be used to create a serverless worker that can be deployed to Runpod as a custom endpoint API.

Quick Start

Create a python script in your project that contains your model definition and the Runpod worker start code. Run this python code as your default container start command:

# my_worker.py

import runpod

def is_even(job):

    job_input = job["input"]
    the_number = job_input["number"]

    if not isinstance(the_number, int):
        return {"error": "Silly human, you need to pass an integer."}

    if the_number % 2 == 0:
        return True

    return False

runpod.serverless.start({"handler": is_even})

Make sure that this file is ran when your container starts. This can be accomplished by calling it in the docker command when you set up a template at console.runpod.io/serverless/user/templates or by setting it as the default command in your Dockerfile.

See our blog post for creating a basic Serverless API, or view the details docs for more information.

Local Test Worker

You can also test your worker locally before deploying it to Runpod. This is useful for debugging and testing.

python my_worker.py --rp_serve_api

Worker Fitness Checks

Fitness checks allow you to validate your worker environment at startup before processing jobs. If any check fails, the worker exits immediately, allowing your orchestrator to restart it.

# my_worker.py

import runpod
import torch

# Register fitness checks using the decorator
@runpod.serverless.register_fitness_check
def check_gpu_available():
    """Verify GPU is available."""
    if not torch.cuda.is_available():
        raise RuntimeError("GPU not available")

@runpod.serverless.register_fitness_check
def check_disk_space():
    """Verify sufficient disk space."""
    import shutil
    stat = shutil.disk_usage("/")
    free_gb = stat.free / (1024**3)
    if free_gb < 10:
        raise RuntimeError(f"Insufficient disk space: {free_gb:.2f}GB free")

def handler(job):
    job_input = job["input"]
    # Your handler code here
    return {"output": "success"}

# Fitness checks run before handler initialization (production only)
runpod.serverless.start({"handler": handler})

Key Features:

  • Supports both synchronous and asynchronous check functions
  • Checks run only once at worker startup (production mode)
  • Runs before handler initialization and job processing begins
  • Any check failure exits with code 1 (worker marked unhealthy)

See Worker Fitness Checks documentation for more examples and best practices.

๐Ÿ“š | API Language Library (GraphQL Wrapper)

When interacting with the Runpod API you can use this library to make requests to the API.

import runpod

runpod.api_key = "your_runpod_api_key_found_under_settings"

Endpoints

You can interact with Runpod endpoints via a run or run_sync method.

Basic Usage

endpoint = runpod.Endpoint("ENDPOINT_ID")

run_request = endpoint.run(
    {"your_model_input_key": "your_model_input_value"}
)

# Check the status of the endpoint run request
print(run_request.status())

# Get the output of the endpoint run request, blocking until the endpoint run is complete.
print(run_request.output())
endpoint = runpod.Endpoint("ENDPOINT_ID")

run_request = endpoint.run_sync(
    {"your_model_input_key": "your_model_input_value"}
)

# Returns the job results if completed within 90 seconds, otherwise, returns the job status.
print(run_request )

API Key Management

The SDK supports multiple ways to set API keys:

1. Global API Key (Default)

import runpod

# Set global API key
runpod.api_key = "your_runpod_api_key"

# All endpoints will use this key by default
endpoint = runpod.Endpoint("ENDPOINT_ID")
result = endpoint.run_sync({"input": "data"})

2. Endpoint-Specific API Key

# Create endpoint with its own API key
endpoint = runpod.Endpoint("ENDPOINT_ID", api_key="specific_api_key")

# This endpoint will always use the provided API key
result = endpoint.run_sync({"input": "data"})

API Key Precedence

The SDK uses this precedence order (highest to lowest):

  1. Endpoint instance API key (if provided to Endpoint())
  2. Global API key (set via runpod.api_key)
import runpod

# Example showing precedence
runpod.api_key = "GLOBAL_KEY"

# This endpoint uses GLOBAL_KEY
endpoint1 = runpod.Endpoint("ENDPOINT_ID")

# This endpoint uses ENDPOINT_KEY (overrides global)
endpoint2 = runpod.Endpoint("ENDPOINT_ID", api_key="ENDPOINT_KEY")

# All requests from endpoint2 will use ENDPOINT_KEY
result = endpoint2.run_sync({"input": "data"})

Thread-Safe Operations

Each Endpoint instance maintains its own API key, making concurrent operations safe:

import threading
import runpod

def process_request(api_key, endpoint_id, input_data):
    # Each thread gets its own Endpoint instance
    endpoint = runpod.Endpoint(endpoint_id, api_key=api_key)
    return endpoint.run_sync(input_data)

# Safe concurrent usage with different API keys
threads = []
for customer in customers:
    t = threading.Thread(
        target=process_request,
        args=(customer["api_key"], customer["endpoint_id"], customer["input"])
    )
    threads.append(t)
    t.start()

GPU Cloud (Pods)

import runpod

runpod.api_key = "your_runpod_api_key_found_under_settings"

# Get all my pods
pods = runpod.get_pods()

# Get a specific pod
pod = runpod.get_pod(pod.id)

# Create a pod with GPU
pod = runpod.create_pod("test", "runpod/stack", "NVIDIA GeForce RTX 3070")

# Create a pod with CPU
pod = runpod.create_pod("test", "runpod/stack", instance_id="cpu3c-2-4")

# Stop the pod
runpod.stop_pod(pod.id)

# Resume the pod
runpod.resume_pod(pod.id)

# Terminate the pod
runpod.terminate_pod(pod.id)

๐Ÿ“ | Directory

.
โ”œโ”€โ”€ docs               # Documentation
โ”œโ”€โ”€ examples           # Examples
โ”œโ”€โ”€ runpod             # Package source code
โ”‚   โ”œโ”€โ”€ api_wrapper    # Language library - API (GraphQL)
โ”‚   โ”œโ”€โ”€ cli            # Command Line Interface Functions
โ”‚   โ”œโ”€โ”€ endpoint       # Language library - Endpoints
โ”‚   โ””โ”€โ”€ serverless     # SDK - Serverless Worker
โ””โ”€โ”€ tests              # Package tests

๐Ÿค | Community and Contributing

We welcome both pull requests and issues on GitHub. Bug fixes and new features are encouraged, but please read our contributing guide first.

Discord Banner 2

1.11.0 Jul 21, 2026
1.10.1 Jul 08, 2026
1.10.0 Jun 24, 2026
1.9.1 Jun 01, 2026
1.9.0 Apr 09, 2026
1.8.2 Mar 24, 2026
1.8.1 Nov 19, 2025
1.7.13 Jul 17, 2025
1.7.12 Jun 16, 2025
1.7.11 Jun 12, 2025
1.7.10 May 28, 2025
1.7.9 Apr 09, 2025
1.7.8 Apr 05, 2025
1.7.7 Dec 10, 2024
1.7.6 Dec 05, 2024
1.7.5 Nov 20, 2024
1.7.4 Oct 24, 2024
1.7.3 Oct 15, 2024
1.7.2 Oct 07, 2024
1.7.1 Sep 26, 2024
1.7.0 Aug 07, 2024
1.6.2 Feb 13, 2024
1.6.1 Feb 11, 2024
1.6.0 Jan 30, 2024
1.5.3 Jan 26, 2024
1.5.2 Jan 16, 2024
1.5.1 Jan 11, 2024
1.5.0 Dec 28, 2023
1.4.2 Dec 14, 2023
1.4.1 Dec 14, 2023
1.4.0 Dec 05, 2023
1.3.7 Nov 29, 2023
1.3.6 Nov 23, 2023
1.3.5 Nov 23, 2023
1.3.4 Nov 14, 2023
1.3.3 Nov 08, 2023
1.3.2 Nov 03, 2023
1.3.1 Oct 31, 2023
1.3.0 Oct 13, 2023
1.2.6 Oct 06, 2023
1.2.5 Oct 05, 2023
1.2.4 Oct 05, 2023
1.2.3 Oct 04, 2023
1.2.2 Oct 04, 2023
1.2.1 Sep 22, 2023
1.2.0 Aug 30, 2023
1.1.3 Aug 20, 2023
1.1.2 Aug 18, 2023
1.1.1 Aug 14, 2023
1.1.0 Aug 08, 2023
1.0.1 Aug 07, 2023
1.0.0 Aug 03, 2023
0.10.0 Jul 01, 2023
0.9.12 Jun 24, 2023
0.9.11 Jun 14, 2023
0.9.10 May 30, 2023
0.9.9 May 25, 2023
0.9.8 May 17, 2023
0.9.7 May 11, 2023
0.9.6 May 11, 2023
0.9.5 May 11, 2023
0.9.4 May 11, 2023
0.9.3 Apr 20, 2023
0.9.2 Apr 12, 2023
0.9.1 Mar 16, 2023
0.9.0 Feb 21, 2023
0.8.4 Jan 30, 2023
0.8.3 Jan 27, 2023
0.8.2 Jan 26, 2023
0.8.1 Jan 26, 2023
0.8.0 Jan 24, 2023
0.7.6 Jan 19, 2023
0.7.5 Jan 17, 2023
0.7.4 Jan 15, 2023
0.7.3 Jan 11, 2023
0.7.1 Jan 11, 2023
0.7.0 Jan 04, 2023
0.6.5 Dec 30, 2022
0.6.4 Dec 28, 2022
0.6.3 Dec 28, 2022
0.6.1 Dec 28, 2022
0.6.0 Dec 26, 2022
0.5.2 Dec 25, 2022
0.5.1 Dec 24, 2022
0.5.0 Dec 23, 2022
0.4.6 Dec 23, 2022
0.4.5 Dec 23, 2022
0.4.4 Dec 23, 2022
0.4.3 Dec 23, 2022
0.4.2 Dec 22, 2022
0.4.1 Dec 22, 2022
0.4.0 Dec 22, 2022
0.3.1 Dec 22, 2022
0.3.0 Dec 22, 2022
0.2.4 Dec 21, 2022
0.2.3 Dec 21, 2022
0.2.2 Dec 20, 2022
0.2.1 Dec 19, 2022
0.2.0 Dec 19, 2022
0.1.15 Dec 19, 2022
0.1.14 Dec 19, 2022
0.1.13 Dec 18, 2022
0.1.12 Dec 18, 2022
0.1.11 Dec 16, 2022
0.1.10 Dec 15, 2022
0.1.7 Dec 15, 2022
0.1.6 Dec 14, 2022
0.1.5 Dec 13, 2022
0.1.4 Dec 12, 2022
0.1.2 Dec 12, 2022
0.1.0 Dec 12, 2022

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras: None
Dependencies:
aiohttp[speedups] (>=3.14.1)
aiohttp-retry (>=2.9.1)
backoff (>=2.2.1)
boto3 (>=1.43.51)
click (>=8.4.2)
colorama (<0.4.7,>=0.4.6)
cryptography (>=49.0.0)
fastapi[all] (>=0.139.2)
paramiko (>=5.0.0)
prettytable (>=3.18.0)
psutil (>=7.2.2)
py-cpuinfo (>=9.0.0)
inquirerpy (==0.3.4)
requests (>=2.34.2)
tomli (>=2.4.1)
tomlkit (>=0.15.1)
tqdm-loggable (>=0.4.1)
urllib3 (>=2.7.0)
watchdog (>=6.0.0)