Quickstart

Goal
See how a Nyckel function works end-to-end — from creation to live predictions to a trained private model. Uses an SMS spam classifier so you can paste text directly; no images or file uploads required.
Time
~5 minutes

1. Create the function

Go to the Nyckel console and sign in. Click New function.

Click Create. Your function is live immediately.


2. Add labels — then test right away

Open the Labels tab. Add two labels:

That’s all you need to start. You do not have to upload training data before testing.

Nyckel uses GPT to power an out-of-the-box zero-shot classifier. “Zero-shot” means the model has not seen any of your examples yet — it uses general language understanding to make predictions based on the label names alone. For many use cases, this is good enough accuracy and acceptable latency and cost to go straight into production.


3. Test it in the UI

Open the Invoke tab. Paste a message and click Invoke.

Try these one at a time — click Copy to paste into the Invoke tab:

Congratulations! You've won a $1,000 Walmart gift card. Click here to claim: http://bit.ly/win-now
Hey, are you still coming to dinner tonight? Let me know by 6.
URGENT: Your bank account has been suspended. Verify your details at http://secure-alert.net
Can you grab some milk on the way home? We're out.
FREE entry: txt WIN to 87121 to receive a £250 prize. T&Cs apply. Reply STOP to opt out.
Running about 10 minutes late to the meeting. Sorry!

After each prediction, you’ll see a result like this:

"labelName": "Spam",
"confidence": 0.96,
"sampleId": "smp_abc123"

This is exactly what your application uses to make decisions — read labelName to route the message and confidence to decide whether to act automatically or hold it for human review.


4. Review predictions as they come in

In the Test or Review tab, confirm if the predicted label is correct, or change it if it’s wrong.

Once you have 2 confirmed examples of each label, Nyckel automatically begins building a private model trained on your data. You’ll see a training indicator appear in the console. The zero-shot classifier continues serving predictions while your private model trains in the background — the endpoint stays live throughout.

When the private model is ready, Nyckel benchmarks it against the zero-shot baseline. If it performs better, the endpoint automatically switches to it. You don’t trigger this manually — it just happens.


5. Call it from the API

Open your function in the Nyckel console and click the Integrate tab. It shows your exact endpoint URL, a ready-to-copy access token, and code snippets for calling the function — no manual setup needed.

The request looks like this:

POST https://www.nyckel.com/v1/functions/{functionId}/invoke
Authorization: Bearer {your_access_token}
Content-Type: application/json

{
  "data": "Your number has been selected for a free cruise. Call 0800-123-456 to claim your prize."
}

And the response:

{
  "labelName": "Spam",
  "confidence": 0.94,
  "sampleId": "smp_xyz789"
}

Your application reads labelName to make a decision and confidence to decide whether to act automatically or hold for review. The function is callable from any language or platform that can send HTTP requests.

As your application invokes the endpoint, each prediction appears in the Review tab. The more you review and annotate, the better your model becomes — every confirmed or corrected prediction feeds directly into the training pipeline.


What you just did

Step What happened
Created a function A live endpoint was provisioned with zero-shot classification powered by GPT
Tested in the UI Got real predictions immediately — no training data required
Reviewed predictions Confirmed and corrected results became labeled training samples
Triggered private training Nyckel automatically built a custom model once you had 2 examples per label
Called the API Invoked the function from outside the console

Next: Create your own function to build a function from scratch with your own data, or go to the Developer Platform to see how to integrate the invoke-annotate loop into a production application.