Skip to main content

Features

Disable Authorization for your APIs

You can disable authorization for your APIs, allowing you to create APIs that are accessible to anyone with the URL. You can add authorized=False to REST APIs, Task Queues, Scheduled Jobs, and ASGI apps.
@app.rest_api(authorized=False)
def handler():
    ...

Task status included in webhook callbacks

Task status is now included in the header field for all webhook callbacks as x-beam-task-status:
curl -X 'POST' 'https://YOUR-WEBHOOK-URL' -H 'x-beam-task-status: COMPLETE' -H 'beam-task-id: 2171451e-3d8e-4e35-a06d-46f2817569ef'

New Examples

Adding multiple API routes per app

You can use ASGI apps along with FastAPI to add multiple API routes to a single deployment. For example, you might want an app with two separate routes: one to train a model, and one for running inference. Endpoint 1
https://[APP-ID].apps.beam.cloud/divide?x=10
Endpoint 2
https://[APP-ID].apps.beam.cloud/square?x=100
from beta9 import App, Runtime, Image
from fastapi import FastAPI

app = App(
    name="square",
    runtime=Runtime(
        cpu=1,
        memory="1Gi",
        image=Image(
            python_packages=["fastapi"]
        )
    ),
)

api = FastAPI()


@app.asgi(authorized=False)
def handler():
    @api.get("/square")
    def square(x: int):
        return {"square": x**2}

    @api.get("/divide")
    def divide(x: int):
        return {"dividend": x / 2}

    return api
I