Create Function
This page is the canonical reference for creating a function through the interface — the five-step wizard, its fields and its navigation rules. For the code contract the function has to satisfy —
handler.py, the return shape each SDK expects,post_processing()andrequirements.txt— see Create function (Code-level).
Accessing the Function Creation Page
- From the left sidebar, select Functions.
- On the Functions page, click Create Function to open the function creation wizard.
Functions: select Create Function
The function creation process consists of five steps:
- Basic Info
- Choose Method
- Choose Template
- Review Code
- Deploy
Step 1: Basic Info
Provide the basic information required to create a function.
Step 1: Basic Info
Function Name
Enter a unique name for the function.
Validation rules:
- Allowed characters: lowercase letters (a–z), numbers (0–9), and hyphens (-)
- Spaces are not allowed
- Minimum length: 2 characters
- Function names must be unique within the project
If the name is invalid or already exists, an error message is displayed.
Description (Optional)
Provide a short description to help identify the purpose of the function. The description can be up to 1024 characters.
Programming Language
Choose the language your function is written in. Quapp supports:
| Language | Notes |
|---|---|
| Python | The default language |
| JavaScript | |
| Q# | |
| C | Runs on the native Qiskit bridge |
| C++ | Runs on the native Qiskit bridge |
The languages you can choose from
Each language comes with its own file definitions and templates, and the platform builds and runs the function end to end. The notebook IDE's AI Suggestion additionally supports Julia.
A programming language is not the same thing as an SDK. The language is how you write the function; the SDK is the quantum framework it runs against, and you select it later, in Step 5.
⚠️ The language you pick here limits the SDKs offered in Step 5. C and C++ run on the native Qiskit 2.4.1 bridge, and the wizard offers Qiskit 2.4.1 only for those two languages — it is hidden for Python, JavaScript and Q#. If you expect to see a particular SDK version at deployment and it is absent, check the language you chose in this step first.
Available SDKs
Under the language selector, the panel Available SDKs provided by Quapp shows which SDKs you can use with the language you chose. It changes when you change the language:
| If you choose | The panel shows |
|---|---|
| Python, JavaScript or Q# | Qiskit (1.3.2 and 0.45.3), Quapp HPC (1.0.0), Merlin (0.4.1), Braket (1.83.0), Perceval (1.2.1), Pyquil (4.15.0), Qibo (0.3.1), Qulacs (0.6.4) and Pennylane (0.37.0) |
| C or C++ | Qiskit 2.4.1 only, on the native Qiskit bridge |
The Available SDKs panel follows the language you choose
Notes:
- The panel in the product is the authoritative list. Versions are added and retired over time, so check the panel rather than relying on the table above.
- The panel is for reference only. You do not choose an SDK in this step.
- The SDK and SDK version are selected during deployment (Step 5).
After entering the required information, click Create Function to proceed to the next step.
Step 2: Choose Method
The screen is titled Choose How to Begin. Select a card, then Continue.

Available options:
Use-case Templates
Start from pre-built quantum algorithm templates optimized for common use cases.
My Templates
Start from a template previously saved by the user.
Blank Editor
Start from scratch, with full IDE access, for a custom implementation. (This card was called Open IDE before October 2026.)
Step 3: Choose Template
This step is displayed when Use-case Templates is selected in Step 2.
The screen is titled Select Template & Configure. Choose a predefined quantum algorithm template: use the search box or the category buttons to narrow the list, select a card, then Continue.

Each card shows the template's SDK as a badge (QISKIT, BRAKET, PENNYLANE…). The same algorithm can exist for several SDKs; Bernstein-Vazirani, for example, exists for Qiskit and for Braket.
Category buttons (October 2026):
- All
- Basics
- Search
- Characterization
- Optimization
- Benchmarking
- Machine Learning
- Variational
- Simulation
Example templates:
- Bernstein-Vazirani
- Deutsch-Jozsa
- Grover Search
- QAOA (MaxCut)
- Quantum Phase Estimation
- Quantum Volume
- Randomized Benchmarking
- State Tomography
- VQE (H2 Ground State)
Navigation
Users can return to Step 2 and modify their selections before entering the code review stage.
Step 4: Review Code
Review and edit the function source code before deployment.

The editor supports the following files:
handler.py
Contains the function implementation.
The file must contain the required function definitions described in the Developer Guide.
requirements.txt
Used to declare external Python dependencies.
Each dependency should be listed on a separate line using standard requirements.txt syntax.
Additional Files
Users may upload Python files from their local environment.
Uploaded files:
- Do not replace handler.py
- Can be imported and used by handler.py
- Are available in the function runtime environment
Uploaded files are scanned for viruses, and the scan result is reported as part of the upload flow. A file that does not pass is not added to the function.
Version History
The editor includes a Version History section for managing saved code versions.
Save Version
The Save Version button becomes available only when code changes are detected.
When a version is saved:
- A new code version is created
- The version is added to Version History
- Previous versions remain available for selection
Navigation
Once the user enters Step 4, navigation to previous wizard steps is disabled.
The user can only:
- Continue to Step 5 (Deploy)
- Return from Step 5 back to Step 4
This behavior ensures consistency between the selected template and the generated source code.
Step 5: Deploy
Review deployment settings before deploying the function.
SDK Configuration
When you started from a template, both fields are already filled in with the template's SDK (for example Qiskit / 1.3.2).

Select:
- SDK / Environment
- SDK Version
The available options depend on the SDKs supported by Quapp. See the list in Step 1: Available SDKs.
Deployment
Click Deploy to deploy the function.
Deployment usually takes one to a few minutes (82 seconds for a Qiskit template in our October 2026 test), because the platform builds the runtime environment and installs the function's dependencies. The function passes through four stages — Creation → Build → Deploy → Completion — and a status of Deploying during this period is expected, not a sign that something is stuck.
After a successful deployment:
- The function appears in the function list
- The Invocation tab becomes available on the Function Details page
- The function can be invoked and can execute jobs
⚠️ Confirm that the deployment actually succeeded. A Last Deployed Time value is not proof of success — it can be updated even when the deploy step failed. The reliable signal is the Invocation tab on the Function Details page. The page you are on does not add that tab by itself when the deployment finishes: go back to Functions and open the function again. If the tab is still missing, check the Build Logs and Deploy Logs tabs.
Navigation
Users may return to Step 4 to modify the source code before deployment.
However, Steps 1–3 are no longer accessible once the function reaches the deployment stage.
Notes
- Templates cannot be changed after deployment.
- Save Version is displayed only when code modifications are detected.
- All required dependencies should be declared before deployment.
- SDK selection is performed during deployment, not during function creation.
- Users may move freely between Steps 2–3 before entering Step 4.
- After entering Step 4, only Step 4 and Step 5 are accessible.
Result After Deploying a Function
When you select Deploy, the wizard closes and the Function Details page of the new function opens. It shows the SDK, the deployed version and the four stages Creation → Build → Deploy → Completion with their start times.

While the deployment runs, the tabs are Source Code, Related Jobs, Build Logs and Deploy Logs. Once Completion is reached, go back to Functions and open the function again: the Invocation tab is then present, and that is what tells you the deployment finished successfully.
For a complete walk-through from template to result, see the Quickstart.