Developer Quickstart

Take your first steps with the Norman API.

  1. Install the Norman SDK

To use the Norman API in Python, install the official Norman SDK using

pip install norman
  1. Signup and Create an API Key

Before making any requests, you’ll need to create an API key.
This key authorizes your SDK to securely access the Norman API.

Request Syntax
from norman import Norman

response = await Norman.signup("<username>")
Parameters

username(string)- The account’s username or email address. [Required]

Example Response
{
  "account": {
    "id": "23846818392186611174803470025142422015",
    "creation_time": "2025-11-09T14:22:17Z",
    "name": "Alice Johnson"
  },
  "api_key": "nrm_sk_2a96b7b1a9f44b09b7c3f9f1843e93e2"
}
Response Structure

Root object (dict):

  • account (dict) — Account metadata containing the following fields:

    * id (str) — Unique account identifier.

    * creation_time (datetime) — Account creation timestamp (UTC).

    * name (str) — Account display name.8', 'float32').

  • api_key (str) — Generated API key used to authenticate SDK requests.

⚠️ Important:
Store your API key securely.
API keys cannot be regenerated — if you lose yours, you’ll need to create a new account.

  1. Run Your First Model

from norman import Norman

# Initialize the SDK with your API key
norman = Norman(api_key="nrm_sk_2a96b7b1a9f44b09b7c3f9f1843e93e2")

# Define the invocation configuration
invocation_config = {
    "model_name": "image_reverser_model",
    "inputs": [
        {
            "display_title": "Input",
            "data": "/Users/alice/Desktop/sample_image.png"
        }
    ]
}

# Invoke the model
response = await norman.invoke(invocation_config)


Example Response

{
  "output_image": <bytes>  // binary data returned by the model
}


Response Structure

Root object (dict):

  • output_image (bytes) — Binary output data representing the model’s generated result.

    For image models, this contains the image bytes.
    For text or audio models, it contains the corresponding binary data.


Accessing the Output

You can display, or save the output, for example:

from io import BytesIO
from PIL import Image

data = response["output_image"]

# Open and display the image
img = Image.open(BytesIO(data))
img.show(title="output_image - Memory")

# Optionally save it to disk
img.save("test_memory_output_image.png")

·

©

2026

·

©

2026