We have redirected you to our new domain: store.godotengine.org. Please update your bookmarks!

Description
Changelog
Reviews

This addon makes HTTP requests much more convenient to use by introducing the await-syntax and removing the need for signals.

Calling an API:

extends AwaitableHTTPRequest

func _ready() -> void:
    var resp := await async_request("https://api.github.com/users/swarkin")

    if resp.success() and resp.status_ok():
        print(resp.status)                   # 200
        print(resp.headers["content-type"])  # application/json

        var json = resp.body_as_json()
        print(json["login"])                 # Swarkin

Downloading an image:

extends AwaitableHTTPRequest

func _ready() -> void:
    var bytes := await request_image()
    if bytes.is_empty(): return

    var path := OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS)+"/image.png"
    var file := FileAccess.open(path, FileAccess.WRITE)
    if not file:
        push_error("Failed to open file.")
        return

    file.store_buffer(bytes)
    print("Downloaded and saved a random image to %s!" % path)

func request_image() -> PackedByteArray:
    var resp := await http.async_request("https://picsum.photos/256")
    if !resp.success() or resp.status_err():
        push_error("Request failed.")
        return PackedByteArray()

    return resp.bytes

View the included examples.tscn scene for more usage examples.

Changelog for version 2.2.1

No changelog provided for this version.

Reviews (2)

Recommended by Grisgram - 28 November 2025

Easy to use, easy to understand. Subclassed it and integrated it seemlessly into a bigger plugin project of mine. Works like a charm.

Recommended by Joshua Anderson - 28 June 2025

Super useful and works well, hopefully something like this comes to the core engine eventually but this is a great option

Login to write a review.