---
meta:
title: How to create and deploy a function with the Scaleway API
description: Deploy Serverless Functions via the Scaleway API following this instructional guide.
content:
h1: How to create and deploy a function with the Scaleway API
paragraph: Deploy Serverless Functions via the Scaleway API following this instructional guide.
tags: functions api deploy
dates:
validation: 2025-03-13
posted: 2021-08-18
categories:
- serverless
---
import Requirements from '@macros/iam/requirements.mdx'
The Scaleway API allows you to create and manage all your Scaleway resources programmatically. Anything you can do through the [Scaleway console](https://www.console.scaleway.com)
can also be done through the API.
Refer to the [Scaleway Developers website](https://www.scaleway.com/en/developers/api/) for more information on the Scaleway API.
- A Scaleway account logged into the [console](https://console.scaleway.com)
- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization
- A valid [API key](/iam/how-to/create-api-keys/)
- Installed [curl](https://curl.se/download.html)
- [Made your first request](https://www.scaleway.com/en/developers/api/#quickstart:-first-request) using the Scaleway API
1. Run the following command in your terminal to create a functions namespace:
```json
curl -X POST \
-H "X-Auth-Token: $SCW_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "",
"project_id": "YOUR_PROJECT_ID"
}' \
"https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces"
```
An output similar to the following displays:
```json
{"id":"example-fb93-43e3-a036-7be69f1af7a1", "name":"your-namespace-name", "environment_variables":{}, "organization_id":"example-776f-4f65-a41e-6c5fc58b4076", "project_id":"example-c162-43f7-bb3e-1182e6f12342", "status":"pending", "registry_namespace_id":"", "error_message":null, "registry_endpoint":"", "description":"", "secret_environment_variables":[], "region":"fr-par"}%
```
2. Run the following command to create a function:
```json
curl -X POST \
-H "X-Auth-Token: $SCW_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "",
"namespace_id": "",
"runtime": ""
}' \
"https://api.scaleway.com/functions/v1beta1/regions/fr-par/functions"
```
An output similar to the following displays:
```json
{"id":"ef777a64-1f4e-4d43-8227-26927c7de057", "name":"your-function-name", "namespace_id":"example-fb93-43e3-a036-7be69f1af7a1", "status":"created", "environment_variables":{}, "min_scale":0, "max_scale":5, "runtime":"python310", "memory_limit":256, "cpu_limit":140, "timeout":"300s", "handler":"handler.handle", "error_message":null, "privacy":"public", "description":"", "domain_name":"namespaceg04rnwx-function-example.functions.fnc.fr-par.scw.cloud", "secret_environment_variables":[], "http_option":"enabled", "runtime_message":"", "build_message":null, "region":"fr-par"}%
```
3. Create a zip file containing your function's code by following [this procedure](/serverless-functions/how-to/package-function-dependencies-in-zip/).
For testing purposes, you can create a zip archive with a simple Python file named `handler.py` at the root of the archive, that contains the following code:
```python
def handle(event, context):
return {
"body": {
"message": 'Hello, world',
},
"statusCode": 200,
}
```
4. Upload your zip file [using the Scaleway console or the Scaleway API](/serverless-functions/how-to/package-function-dependencies-in-zip/#how-to-upload-your-zip-file).
5. Run the following command to deploy your function:
```json
curl -X POST \
-H "X-Auth-Token: $SCW_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{}' \
"https://api.scaleway.com/functions/v1beta1/regions/fr-par/functions//deploy"
```
Your function is now being deployed.
You can check the status of your function from the [Scaleway console](https://www.console/scaleway.com/) or by running the following command:
```json
curl -X GET \
-H "X-Auth-Token: $SCW_SECRET_KEY" \
"https://api.scaleway.com/functions/v1beta1/regions/fr-par/functions/"
```
6. Run the following command to call your function once it is deployed:
```
curl
```