Run Lambda (Public)

Invokes a lambda publicly. No authentication is required. The endpoint accepts any HTTP method.

Use this route for webhooks and public API calls. The lambda ID comes from the lambda management endpoints.

Path Parameters

Parameter Type Description
lambda_id string Lambda identifier

Request Body

Send any payload you want the lambda to receive as req.body.

HTTP Request

curl -X POST "https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789" \
  -H "Content-Type: application/json" \
  -d '{
  "event": "payment_received",
  "amount": 49.99,
  "currency": "USD"
}'
POST /run/f1a2b3c4-d5e6-7890-abcd-ef0123456789 HTTP/1.1
Host: api.hola.cloud
Content-Type: application/json

{
  "event": "payment_received",
  "amount": 49.99,
  "currency": "USD"
}
// Go 1.21+, standard library only. Save as main.go and run: go run main.go
package main

import (
	"fmt"
	"io"
	"net/http"
	"encoding/json"
	"strings"
)

func main() {
	payload := map[string]any{"amount": 49.99, "currency": "USD", "event": "payment_received"}
	bodyBytes, err := json.Marshal(payload)
	if err != nil {
		panic(err)
	}
	body := string(bodyBytes)

	req, err := http.NewRequest("POST", "https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789", strings.NewReader(body))
	if err != nil {
		panic(err)
	}
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	responseBody, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status)
	fmt.Println(string(responseBody))
}
<?php
// PHP 8+ with the curl extension. Save as example.php and run: php example.php

$payload = ['amount' => 49.99, 'currency' => 'USD', 'event' => 'payment_received'];
$body = json_encode($payload);

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
    ],
]);

$response = curl_exec($ch);
if ($response === false) {
    throw new Exception(curl_error($ch));
}
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $response, "\n";
curl_close($ch);
# Python 3.8+. Install: pip install requests. Save as example.py and run: python example.py
import requests

headers = {
    "Content-Type": "application/json",
}

payload = {"amount": 49.99, "currency": "USD", "event": "payment_received"}

response = requests.request(
    "POST",
    "https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789",
    headers=headers,
    json=payload
)

print(response.status_code)
print(response.text)
// Node.js 18+. Save as example.mjs and run: node example.mjs
const payload = {"amount": 49.99, "currency": "USD", "event": "payment_received"};

const response = await fetch("https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
const payload = {"amount": 49.99, "currency": "USD", "event": "payment_received"};

const response = await fetch("https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
// Java 17+, standard library only. Save as Main.java and run: java Main.java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        var body = """
{
  "event": "payment_received",
  "amount": 49.99,
  "currency": "USD"
}
""";

        var request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789"))
            .method("POST", HttpRequest.BodyPublishers.ofString(body))
            .header("Content-Type", "application/json")
            .build();

        var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

Example

curl -X POST "https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "payment_received",
    "amount": 49.99,
    "currency": "USD"
  }'
POST /run/f1a2b3c4-d5e6-7890-abcd-ef0123456789 HTTP/1.1
Host: api.hola.cloud
Content-Type: application/json

{
    "event": "payment_received",
    "amount": 49.99,
    "currency": "USD"
  }
// Go 1.21+, standard library only. Save as main.go and run: go run main.go
package main

import (
	"fmt"
	"io"
	"net/http"
	"encoding/json"
	"strings"
)

func main() {
	payload := map[string]any{"amount": 49.99, "currency": "USD", "event": "payment_received"}
	bodyBytes, err := json.Marshal(payload)
	if err != nil {
		panic(err)
	}
	body := string(bodyBytes)

	req, err := http.NewRequest("POST", "https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789", strings.NewReader(body))
	if err != nil {
		panic(err)
	}
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	responseBody, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status)
	fmt.Println(string(responseBody))
}
<?php
// PHP 8+ with the curl extension. Save as example.php and run: php example.php

$payload = ['amount' => 49.99, 'currency' => 'USD', 'event' => 'payment_received'];
$body = json_encode($payload);

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
    ],
]);

$response = curl_exec($ch);
if ($response === false) {
    throw new Exception(curl_error($ch));
}
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $response, "\n";
curl_close($ch);
# Python 3.8+. Install: pip install requests. Save as example.py and run: python example.py
import requests

headers = {
    "Content-Type": "application/json",
}

payload = {"amount": 49.99, "currency": "USD", "event": "payment_received"}

response = requests.request(
    "POST",
    "https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789",
    headers=headers,
    json=payload
)

print(response.status_code)
print(response.text)
// Node.js 18+. Save as example.mjs and run: node example.mjs
const payload = {"amount": 49.99, "currency": "USD", "event": "payment_received"};

const response = await fetch("https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
const payload = {"amount": 49.99, "currency": "USD", "event": "payment_received"};

const response = await fetch("https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
// Java 17+, standard library only. Save as Main.java and run: java Main.java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        var body = """
{
    "event": "payment_received",
    "amount": 49.99,
    "currency": "USD"
  }
""";

        var request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.hola.cloud/run/f1a2b3c4-d5e6-7890-abcd-ef0123456789"))
            .method("POST", HttpRequest.BodyPublishers.ofString(body))
            .header("Content-Type", "application/json")
            .build();

        var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

Response

The response is whatever the lambda handler returns.

1{
2  "body": {
3    "processed": true,
4    "event": "payment_received"
5  }
6}

Error Codes

Code Description
400 Invalid request body
404 Lambda not found
500 Lambda execution error

Comments

Leave a comment