بازدان بۆ ناوەڕۆکی سەرەکی
بەشەکانی ڕێنمایی ڕاهێنان هەموو بەڵگەنامەکان

سەرچاوەی APIی ڕاهێنان

خاڵەکانی کۆتایی تۆمارکراو، ناوەڕۆکی داواکاری، وەڵام، سنووری خاوەندارێتی و مامەڵە لەگەڵ هەڵە.

فەرمان و کۆد لە هەموو زمانێکدا بە ئینگلیزی دەمێننەوە. جێگرەوە گەورەنووسەکان بە بەهای هەژمار و کاری پارەدراوی خۆت بگۆڕە؛ کلیلی ڕاستەقینە لە نۆتبووکی هاوبەش یان تۆمارەکاندا مەنووسە.

ژیانی سەرچاوەی API

Quote، کاری پارەدراو و دانیشتنی ڕاهێنان سەرچاوەی جیاوازن.
  1. Quote ڕێکخستن و نرخی ئێستا پشتڕاست بکەوە
  2. Job دروستی بکە و پارەدانی پەسەندکراو تەواو بکە
  3. Session Runtime و سەرچاوەی لەخۆگیراو هەڵبژێرە
  4. ئامادەکاری Manifestی پشتڕاستکراوی کۆمەڵەداتا بەرهەم بهێنە
  5. ڕاپۆرت ڕاهێنان و metadataی بەرهەمی ڕاستەقینە تۆمار بکە

Quote: ڕێکخستن و نرخی ئێستا پشتڕاست بکەوە. Job: دروستی بکە و پارەدانی پەسەندکراو تەواو بکە. Session: Runtime و سەرچاوەی لەخۆگیراو هەڵبژێرە. ئامادەکاری: Manifestی پشتڕاستکراوی کۆمەڵەداتا بەرهەم بهێنە. ڕاپۆرت: ڕاهێنان و metadataی بەرهەمی ڕاستەقینە تۆمار بکە

پشتڕاستکردنەوەی ناسنامە و یاسای داواکاری

HTTPS لەگەڵ Authorization: Bearer و کلیلی APIی هەژمار بە مەودای ai:training بەکاربهێنە. Accept: application/json بنێرە؛ بۆ bodyی JSON، Content-Type: application/json زیاد بکە. هەموو سەرچاوەکان هی هەژمارن. کۆمەڵە ڕێگاکە سنووری 30 داواکاری لە خولەکێکدا هەیە، لەگەڵ کۆنترۆڵی زیادە لە شوێنی ڕێکخراو. ناسنامەی نموونە جێگرەوەن، نەک سەرچاوەی هاوبەش.

  • ناسنامەی quote، UUIDی job، ناسنامەی session، IDی مۆدێل و IDی بەرهەم جیاوازن.
  • دوای پچڕانی تۆڕ پێش دووبارەکردنەوەی نووسین، دۆخی ئێستا بخوێنەوە.
  • زمانی پەڕەی گشتی یان پارامەتەری queryی نرخ بۆ داواکاریی API بەکارمەهێنە.
نموونە · bash
export TRAINING_API='https://fusionpointai.com/api/v1/training'
# Set the key securely as shown in Quickstart.
export JOB_UUID='REPLACE_WITH_YOUR_JOB_UUID'
export SESSION_ID='REPLACE_WITH_YOUR_SESSION_ID'
curl --fail-with-body --silent --show-error "$TRAINING_API/jobs" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" -H 'Accept: application/json'

داواکاری، وەڵام و دۆخ

لە ڕێکخستنێکی گونجاوەوە quote دروست بکە، jobی بنەڕەتی لە quoteەکە دروست بکە و پێش کردنەوەی session ڕەوتی پارەدانی پەسەندکراو تەواو بکە. خاڵەکانی کۆتاییی پڕۆژە دەستگەیشتنی سەرچاوەی پارەدراوی ئێستا ڕێگەپێدەدەن و داوای بەرنامە یان وانە دەکەن، بێ دروستکردنی پسووڵە یان گۆڕینی نرخ. وەڵامی session ڕێکخستن، سەرچاوەی هەڵبژێردراو، manifestی کۆمەڵەداتا، هەنگاوی ڕاپۆرتکراو و ڕاپۆرت لەخۆدەگرێت. ئامادەکردن و ڕاپۆرتکردن داواکاریی جیاوازن؛ دۆخی job و sessionیش جیاوازن.

  • ڕێگەپێدانی پڕۆژە provider و reference_model_id دەوێت؛ داواکاریی مامۆستا action و objectiveیش پێویستە.
  • نموونەی مامۆستا تەنها ماددەی ڕاهێنانی پەسەندکراو دەگرێتەوە؛ ڕیزی پشتڕاستکردنەوە و تاقیکردنەوەی کۆتایی لە ناوخۆ دەمێننەوە.
  • ڕاپۆرتی کۆتاییی کلایەنتی کۆن بەرهەمی ناوخۆی ڕاستەقینە و پشکنینی یەکپارچەیی و هەڵسەنگاندن دەوێت.
نموونە · text
POST /api/v1/training/quotes
reference_model_id     required eligible integer model ID
training_plan_id       required public provider-plan integer ID
mode                   automatic | advanced
objective              required string, 10..4000 characters
language               required string, at most 120 characters
performance_criteria   required string, 10..2000 characters
student_release_slug   optional eligible slug, at most 190 characters
method                 optional eligible method, at most 80 characters
dataset_megabytes      optional integer, 1..1000000
gpu_count              optional integer, 1..128
delivery               optional: artifact | hosted
execution_target       optional: fusionpointai_hosting | customer_datacenter | colab

Availability and approved plan policies can impose narrower constraints.
Do not submit price, fixed_total, currency, price_version_id or model_training.
نموونە · json
{
  "reference_model_id": 123,
  "training_plan_id": "<INTEGER_FROM_YOUR_PROVIDER_PLAN>",
  "mode": "advanced",
  "objective": "Train a German support-message classifier.",
  "language": "German",
  "performance_criteria": "Evaluate per-class precision and recall on held-out data.",
  "student_release_slug": "<ELIGIBLE_STUDENT_RELEASE_SLUG>",
  "method": "LoRA",
  "dataset_megabytes": 8,
  "gpu_count": 1,
  "delivery": "artifact"
}
نموونە · bash
# Save the body as quote.json; replace ID placeholders with integers.
# Automatic mode omits student_release_slug and method.
curl --fail-with-body --silent --show-error "$TRAINING_API/quotes" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' \
  --data-binary @quote.json
# Save {"quote":"YOUR_QUOTE_UUID"} as job.json.
# Creates a native job/invoice; this is not payment confirmation.
curl --fail-with-body --silent --show-error "$TRAINING_API/jobs" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' \
  --data-binary @job.json
curl --fail-with-body --silent --show-error "$TRAINING_API/jobs/$JOB_UUID" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" -H 'Accept: application/json'
نموونە · text
POST /api/v1/training/quotes: 201
{quote: UUID, currency: ISO_CODE, fixed_total: DECIMAL_STRING, expires_at: ISO_8601}

POST /api/v1/training/jobs: {"quote":"OWNED_QUOTE_UUID"}
201 for a newly created job; 200 when an accepted quote reuses its job.
Job fields:
id                job UUID
status            native job state, such as awaiting_payment
progress_percent  recorded progress, not an independent quality score
invoice_id        owned native invoice ID or null
created_at        ISO 8601 timestamp
completed_at      ISO 8601 timestamp or null
training_session  null or {id, status, step, delivery, verification}

GET /api/v1/training/jobs:
{data: JOB_ARRAY, current_page: INTEGER, last_page: INTEGER, per_page: 50, total: INTEGER}

This is a response-shape reference, not a fabricated live response.
نموونە · bash
# Save as session.json, using your paid job UUID and optional reference ID:
# {"job":"YOUR_PAID_JOB_UUID","runtime":"customer_datacenter","reference_model_id":123}
curl --fail-with-body --silent --show-error "$TRAINING_API/sessions" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' \
  --data-binary @session.json
curl --fail-with-body --silent --show-error "$TRAINING_API/sessions/$SESSION_ID" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" -H 'Accept: application/json'
# One preparation batch; inspect progress before another request.
curl --fail-with-body --silent --show-error "$TRAINING_API/sessions/$SESSION_ID/prepare" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' --data '{}'
نموونە · text
Session response fields (shape reference, not a fabricated live result):
id                  session UUID
job                 owned job UUID
status              preparing | ready | running | evaluating | completed | failed | cancelled
configuration       approved method, student_checkpoint, sdk_training and selected reference
reference_model_id  selected integer reference ID
expires_at          ISO 8601 access expiry
step                last reported integer step
datasets[]          {split, rows, bytes, sha256}
report              current report object; event metrics live under report.last_event.metrics
delivery            runtime_local
verification        runtime_reported
نموونە · bash
curl --fail-with-body --silent --show-error \
  "$TRAINING_API/sessions/$SESSION_ID/datasets/train" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/x-ndjson' --output train.jsonl
# Use /datasets/validation for the other supported split.
sha256sum train.jsonl
# Compare bytes, rows and SHA-256 with the session manifest.
# For published server-side artifacts only, not the local SDK ZIP:
# GET /api/v1/training/jobs/{job}/artifacts/{file}
نموونە · text
POST /api/v1/training/sessions/{session}/events
Content-Type: application/json

state         required: running | evaluating | failed
step          required integer: 0..2000
total_steps   required integer: 1..2000
metrics       optional; only loss and eval_loss, each 0..1000000
error_code    optional: training_failed | evaluation_failed | runtime_unavailable |
              dataset_invalid | report_failed

Send actual trainer observations, never sample or invented metrics.
نموونە · bash
# Build the body from a REAL SDK report; requires jq.
jq '{artifact_name:"model-package.zip",report:.completion_report}' \
  customer-model-run-001/training-report.json > completion.json
curl --fail-with-body --silent --show-error "$TRAINING_API/sessions/$SESSION_ID/complete" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' \
  --data-binary @completion.json
# Cancel eligible service state, not the operating-system process:
curl --fail-with-body --silent --show-error "$TRAINING_API/sessions/$SESSION_ID/cancel" \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' --data '{}'
نموونە · bash
curl --fail-with-body --silent --show-error \
  'https://fusionpointai.com/api/v1/training/projects/authorize' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' \
  --data '{"provider":"openai","reference_model_id":123}'
# The response identifies the owned paid job/grant and access expiry.
نموونە · bash
curl --fail-with-body --silent --show-error \
  'https://fusionpointai.com/api/v1/training/projects/teacher' \
  -H "Authorization: Bearer $FUSIONPOINTAI_API_KEY" \
  -H 'Accept: application/json' -H 'Content-Type: application/json' \
  --data '{"provider":"openai","reference_model_id":123,"action":"lessons","objective":"Classify support messages into agreed categories.","topic":"ambiguous_requests","count":2,"approved_examples":["A reviewed support training example."]}'
# Send only explicitly approved training examples. Never send held-out rows.
# Curriculum action returns topics; lessons action returns text/topic examples.
نموونە · python
import os
from fusionpointai_training import TrainingClient

client = TrainingClient(api_key=os.environ["FUSIONPOINTAI_API_KEY"])
session = client.get_session(os.environ["FUSIONPOINTAI_SESSION_ID"])
print("Session:", session["id"])
print("Status:", session["status"])
print("Last reported step:", session["step"])
# Inspection is read-only; status and step are server-reported state.
نموونە · python
import os
from fusionpointai_training import TrainingClient

client = TrainingClient(api_key=os.environ["FUSIONPOINTAI_API_KEY"])
session = client.get_session(os.environ["FUSIONPOINTAI_SESSION_ID"])
for manifest in session["datasets"]:
    print(
        manifest["split"],
        "rows:", manifest["rows"],
        "bytes:", manifest["bytes"],
        "sha256:", manifest["sha256"],
    )
# These are server-provided manifest values, not a local integrity pass.
نموونە · python
import os
from fusionpointai_training import TrainingClient

client = TrainingClient(api_key=os.environ["FUSIONPOINTAI_API_KEY"])
session = client.get_session(os.environ["FUSIONPOINTAI_SESSION_ID"])
server_report = session.get("report")
runtime_report = server_report.get("runtime") if isinstance(server_report, dict) else None
if (
    session.get("status") == "completed"
    and isinstance(runtime_report, dict)
    and runtime_report.get("artifact_sha256") == os.environ["LOCAL_ARTIFACT_SHA256"]
    and server_report.get("delivery") == "runtime_local"
    and server_report.get("verification") == "runtime_reported"
):
    print("Server report matches the local artifact digest.")
else:
    print("Completion is not confirmed for this local artifact.")
# Reconcile by reading state; do not repeat training or invent a result.

هەڵە و یەکخستنی پارێزراو

دۆخی HTTP و وردەکاریی پشتڕاستکردنەوەی گەڕاندراو بەکاربهێنە؛ گریمانە مەکە هەموو هەڵەیەک کاتییە. 401 بۆ داواکاریی بێ ناسنامە، 403 بۆ دەستگەیشتنی ڕەتکراو، 404 بۆ سەرچاوەی نەدۆزراوە یان هی خاوەن‌نەبوو، 409 بۆ دۆخی ناگونجاو، 422 بۆ تێخستنی نادروست و 429 بۆ سنووری داواکاری چاوەڕێ بکە. شکستەکانی دابینکەر یان runtime دەتوانن هەڵەی تریش بگەڕێننەوە. SDK APIError پیشان دەدات بێ دەرکردنی وەڵامی خامی دەرەکی کە نهێنی لەخۆبگرێت.

  • ڕووداو دەتوانێت running، evaluating یان failed بێت؛ کلیلی metricەکان loss و eval_lossن.
  • step و total_steps سنووری 2000یان هەیە؛ total_steps دەبێت ئەرێنی بێت.
  • bodyی تەواو artifact_name و هەموو خانەکانی ڕاپۆرتی نموونەکە دەوێت.
نموونە · text
401  Authentication missing or invalid
403  Account/key scope or access denied
404  Resource missing, non-owned or intentionally hidden
409  Invalid session transition, runtime, paid-access or model configuration
410  Writable session expired
422  Invalid request fields or completion criteria not met
429  Request rate limited
502  Upstream reference data malformed or preparation failed

Do not retry a write blindly. Read session state and inspect the response.
Keep error_code distinct from the HTTP status. Never log authorization.
نموونە · text
POST /api/v1/training/sessions/{session}/complete
artifact_name                 safe filename ending in .zip, max 160 characters
report.training_steps         integer 1..2000
report.weights_before_sha256  lowercase SHA-256 of actual pre-training weights
report.weights_after_sha256   lowercase SHA-256 of actual changed weights
report.artifact_sha256        lowercase SHA-256 of the real local ZIP
report.artifact_bytes         integer 1..107374182400
report.eval_loss_before       finite number >0 and <=1000000
report.eval_loss_after        finite number >=0 and <=1000000
report.base_repository        pinned student repository, max 255 characters
report.base_revision          lowercase immutable 40-character revision
report.method                 SFT | LoRA | QLoRA

Values must match the approved session and actual local training.
Additional report keys are rejected. This body does not upload the ZIP.
نموونە · python
import os
from fusionpointai_training import TrainingClient
from fusionpointai_training.errors import APIError

client = TrainingClient(
    api_key=os.environ["FUSIONPOINTAI_API_KEY"],
    timeout=30.0,
    max_get_retries=2,
)
try:
    session = client.get_session(os.environ["FUSIONPOINTAI_SESSION_ID"])
except APIError:
    # GET retries are bounded. Do not blindly retry a write after an error.
    print("Session inspection failed; check access and current server state.")
else:
    print("Status:", session["status"])
# Never print the API key, authorization headers, or response secrets.

سەرچاوەی API

خاڵی کۆتاییمەبەست و هەڵسوکەوت
POST /api/v1/training/quotes Authorization: Bearer ai:training ڕێڕەوی سەرچاوە، پلان و ڕێکخستنی گونجاو پشتڕاست بکەوە؛ UUIDی quote، currency، fixed_total و expires_at بگەڕێنەوە. پلانی پەسەندکراو و ڕێکخستنی شایستەی قوتابی بەکاربهێنە، نەک نرخی هەڕەمەکیی کلایەنت.
GET /api/v1/training/jobs Authorization: Bearer ai:training لیستی jobەکانی کڕیاری پشتڕاستکراوە بخوێنەوە. کۆمەڵەی گەڕێندراو و ناسنامەی سەرچاوە بپشکنە، نەک ژمارەیەکی گریمانەکراو.
POST /api/v1/training/jobs Authorization: Bearer ai:training لە quote UUIDی دروستەوە jobی خاوەنداریکراوی هەژمار دروست بکە. وەڵام IDی job، دۆخ، IDی پسووڵە و کات‌نیشانەکان لەخۆدەگرێت؛ دروستکردنی job بەڵگەی پارەدان نییە.
GET /api/v1/training/jobs/{job} Authorization: Bearer ai:training بە UUIDی job دۆخی یەک jobی خاوەنداریکراو، پێشکەوتنی زیندوو و دۆخی گەیاندن بخوێنەوە.
GET /api/v1/training/jobs/{job}/artifacts/{file} Authorization: Bearer ai:training پەڕگەیەکی بڵاوکراوەی سەر بە ئەم jobەی خاوەنداریکراو دابگرە. ZIPی SDKی ناوخۆ خۆکارانە بارناکرێت و لەم ڕێگایەوە بەردەست نابێت.
POST /api/v1/training/sessions Authorization: Bearer ai:training Body: UUIDی job، runtime و reference_model_idی هەڵبژاردەیی و ئەرێنی. Sessionی نوێ یان بەکارهێنراوەوە بگەڕێنەوە؛ گۆڕینی سەرچاوە تەنها پێش دەستپێکردنی ئامادەکاری ڕێگەپێدراوە.
GET /api/v1/training/sessions/{session} Authorization: Bearer ai:training Sessionی خاوەنداریکراو و ڕێکخستن، سەرچاوە، کۆمەڵەداتا، ڕاپۆرت و دۆخی بخوێنەوە. خوێندنەوەی دۆخ ڕاهێنان دەست پێناکات.
POST /api/v1/training/sessions/{session}/prepare Authorization: Bearer ai:training JSONی بەتاڵ بنێرە بۆ داوای batchێکی سنوورداری ئامادەکاری. تا پێشکەوتن هەیە دووبارەی بکەوە تا ئامادە بێت، لە سنووری بودجەی داواکارییەکاندا.
GET /api/v1/training/sessions/{session}/datasets/{split} Authorization: Bearer ai:training train یان validation بە وەک application/x-ndjson دابگرە. بایت، SHA-256 و ژمارەی ڕیزەکان لەگەڵ manifestی هەمان session پشتڕاست بکەرەوە.
POST /api/v1/training/sessions/{session}/events Authorization: Bearer ai:training دۆخی ڕاستەقینە، step، total_steps و metricی هەڵبژاردەیی loss/eval_loss ڕاپۆرت بکە. تەنها دۆخی پشتگیریکراو و error-code بەکاربهێنە.
POST /api/v1/training/sessions/{session}/complete Authorization: Bearer ai:training artifact_name و ڕاپۆرتی تەواوی ڕاهێنانی ڕاستەقینە پێشکەش بکە. خزمەتگوزاری شێواز، revisionی بنەڕەت، گۆڕانی کێش، digestی بەرهەم و پێوەری هەڵسەنگاندن دەپشکنێت.
POST /api/v1/training/sessions/{session}/cancel Authorization: Bearer ai:training JSONی بەتاڵ بنێرە بۆ هەڵوەشاندنەوەی دۆخی گونجاوی خزمەتگوزاری. لە کاتی پێویست پرۆسەی GPUی جیاواز خۆت بوەستێنە؛ ئەمە pause/resume نییە.
POST /api/v1/training/projects/authorize Authorization: Bearer ai:training POST /api/v1/training/projects/authorize لەگەڵ provider و reference_model_idی ئەرێنی. دەستگەیشتنی پارەدراوی هەژماری پشتڕاستکراو بە سەرچاوەی ڕاهێنان دووبارە دەپشکنێت و job، grant، provider، مۆدێلی سەرچاوە و بەسەرچوونی خاوەنداریکراو دەگەڕێنێتەوە. پسووڵە دروست ناکات و پارەدان ناگۆڕێت.
POST /api/v1/training/projects/teacher Authorization: Bearer ai:training POST /api/v1/training/projects/teacher بە provider، reference_model_id، actionی curriculum یان lessons، objective، topicی هەڵبژاردەیی، count لە 1–4 و تا هەشت approved_examples (هەر یەک زۆرترین 2,000 پیت). بابەت یان ڕیزی دەقی وانە/بابەت دەگەڕێنێتەوە. تەنها ماددەی ڕاهێنانی پەسەندکراو بنێرە؛ داتای پشتڕاستکردنەوە و تاقیکردنەوەی کۆتایی هەرگیز مەبنێرە.