From examples to predictions.
Start in the workspace with one classification task. The current beta supports text and structured records with one binary or multiclass label per row.
1. Prepare your dataset
Upload CSV with a header row, or JSONL with one flat object per line. Include your input fields and a column containing the correct answer. Choose an optional group column to keep related examples in the same split.
message,label,source_group
"Please resend my invoice",billing,conversation_001
"I need to reset my password",account,conversation_002
"My file export fails",technical,conversation_003This is a format example, not enough data to train a model. The data preparation report identifies missing labels, contradictory duplicates, and insufficient class coverage. Download the 400-row synthetic walkthrough dataset to try the workflow. It uses two easy synthetic labels to exercise the full workflow. Its results are not evidence of real-world performance. A more challenging three-label sample is also available; it may fail deployment qualification.
2. Set requirements and train
Confirm input columns, the answer column, and any related-example group. Choose accepted-accuracy and automatic-coverage requirements before training. Preparation creates separate training, model-selection, calibration, and final-test splits.
After the first run, your project’s mapping and acceptance requirements are fixed. Reusing the same prepared dataset returns its existing run. Add genuinely new examples to train another version; previously reserved final-test examples are excluded from later training and evaluation.
3. Read the evaluation
Accepted accuracy measures predictions above the model’s confidence threshold. Coverage measures how many cases it accepts automatically. Deployment qualification uses conservative confidence bounds, not only the point estimates. Related examples are evaluated using independent family representatives.
Inspect the baseline, the class-level errors, and the reasons attached to the result. A completed run can require more examples or fail to qualify. You can deploy only a qualifying evaluated artifact.
4. Call your deployed model
Create an API key from Account. Its complete value is shown only once. Keys can access all projects belonging to your account; store them on your server, not in public browser code.
curl https://sotayard.com/api/v1/projects/PROJECT_ID/predict \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"inputs":{"message":"Please resend my invoice"}}'Replace the project ID and input fields with those shown in your deployment page. The response includes label, status, scores, and model_version. A needs_review status means the result did not meet the confidence threshold; route it to your review process.
API endpoints
| Method | Path after /api/v1 | Purpose |
|---|---|---|
| GET | /projects | List your projects |
| GET | /projects/:id | Datasets, runs, deployment, and limits |
| POST | /projects/:id/predict | Predict from an inputs object |
| POST | /projects/:id/feedback | Save inputs, label, and model_version as a correction |
| GET | /projects/:id/feedback | Read saved corrections |
| GET | /runs/:id | Read training status and evaluation |
The workspace manages dataset upload, training, cancellation, deployment, and rollback. Use the deployed endpoint URL from your project for application integration.
Errors and limits
Errors use {"error":{"code":"…","message":"…"}}. A 401 response means the key is missing or invalid. A 429 means a limit was reached. A 503 can mean the inference worker is occupied; respect Retry-After and retry with backoff.
Current limits: 3 training runs per account per day, 1 active run, 2,000 rows and 5 MB per dataset, 5 retained runs per project, 1,000 predictions per account per day, and 10 projects. Training and inference run with bounded resources. The deployed model remains separate from a new training candidate.
Improve a version
Save corrections in the playground and export them as JSONL. Replace the original labels in your source dataset; do not append conflicting copies of the same input. The export flattens input fields alongside the original answer column. Preserve the original source group IDs if your task uses grouping; the prediction input does not contain this bookkeeping column. Upload the expanded dataset to prepare a new version. Corrections never silently change the model currently serving predictions.