YOLO Vision 2026:

REST API Referansı#

Ultralytics Platform, veri setlerine, görüntülere, projelere, modellere, eğitime, dışa aktarmalara ve dağıtımlara programatik erişim için bir REST API sağlar.

Ultralytics Platform Interactive API Documentation

Hızlı Başlangıç
# List the datasets owned by a workspace
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/datasets/YOUR_USERNAME

Aşağıdaki her uç nokta, bu referansla aynı sözleşmeden oluşturulan ultralytics-platform SDK'sından client.<resource>.<method>(...) çağrısını listeler.

İnteraktif API Referansı

Bu sayfa API'nin rehberli bir turudur. Oluşturulan, her zaman güncel referans platform.ultralytics.com/api/docs adresinde bulunur ve bunu destekleyen makine tarafından okunabilir OpenAPI 3.2 belgesi platform.ultralytics.com/openapi.json adresinde yayınlanır. İkisi de doğrudan sunucu tarafı sözleşmesinden oluşturulmuştur, bu nedenle bu sayfa ile şema çeliştiğinde bunlar yetkilidir.

API Genel Bakış#

API, çekirdek Platform kaynakları etrafında organize edilmiştir:

graph LR
    A[API Key]:::start --> B[Datasets]:::proc
    A --> C[Projects]:::proc
    B -->|images| G[Images]:::proc
    C -->|contains| D[Models]:::proc
    B -->|train on| D
    D -->|deploy| E[Deployments]:::proc
    D -->|export| F[Exports]:::proc

    classDef start fill:#4CAF50,color:#fff
    classDef proc fill:#2196F3,color:#fff
KaynakAçıklamaTemel İşlemler
DatasetsEtiketli görüntü koleksiyonlarıCRUD, veri alma, sürümler, sınıflar, bölmeler, klonlama
ImagesBireysel görüntüler ve etiketlerOkuma, etiketleme, bölme taşıma, silme, otomatik etiketleme
ProjectsModel çalışma alanlarıCRUD, klonlama
ModellerEğitilmiş kontrol noktalarıCRUD, tahmin, indirme, klonlama, eğitim durumu
TrainingBulut GPU eğitim işleriGPU kullanılabilirliği, başlatma, ilerleme, iptal etme
ExportsFormat dönüştürme işleriOluşturma, listeleme, durum, iptal etme
DeploymentsÖzel çıkarım uç noktalarıOluşturma, başlatma/durdurma/değiştirme, tahmin, metrikler, loglar
TrashGeçici olarak silinen kaynaklarListeleme, geri yükleme, kalıcı olarak silme
StorageBulut depolama entegrasyonlarıBağlanma, keşfetme, göz atma, bağlantıyı kesme
AccountPlan, krediler, depolama, profilHesap özeti, API anahtarları, depolama kullanımı, kullanıcı arama
BillingPlan kullanımı ve defterKullanım özeti, işlemler
ExploreGenel içerik aramaProjeleri ve veri setlerini arama

Kimlik Doğrulama#

Çoğu uç nokta bir API anahtarı gerektirir. Genel içeriği açığa çıkaran uç noktalar — herkese açık bir veri setini, projeyi veya modeli okumak, genel veri seti görüntülerini listelemek, genel bir model üzerinde çıkarım çalıştırmak veya Explore araması yapmak — ayrıca anonim istekleri kabul eder ve bir anahtar sağlandığında basitçe daha fazlasını döndürür.

Bir API Anahtarı Al#

  1. Settings > API Keys bölümüne git
  2. Create Key öğesine tıkla
  3. Oluşturulan anahtarı kopyala

Ayrıntılı talimatlar için API Keys sayfasına bak.

Yetkilendirme Başlığı#

API anahtarını bir bearer token olarak ekle:

Authorization: Bearer YOUR_API_KEY
API Anahtarı Formatı

API anahtarları, ul_ harf dizisini takip eden 40 onaltılık karakterden oluşur, toplamda 43 karakterdir (örneğin ul_a1b2c3d4e5f6789012345678901234567890abcd). Eksik başlığa, hatalı biçimlendirilmiş bir anahtara veya iptal edilmiş bir anahtara sahip istekler 401 döndürür. Anahtarını gizli tut -- asla sürüm kontrolüne taahhüt etme veya herkese açık şekilde paylaşma.

Örnek#

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/account/summary

Temel URL#

Tüm API uç noktaları şunu kullanır:

https://platform.ultralytics.com/api

Kaynak Yolları#

Kaynaklar veritabanı ID'leri ile değil, Platform URL'lerinde görünen aynı insan tarafından okunabilir adlarla adreslenir:

KaynakYolÖrnek
Veri Seti/api/datasets/{owner}/{dataset}/api/datasets/acme-vision/warehouse
Proje/api/projects/{owner}/{project}/api/projects/acme-vision/inspection
Model/api/models/{owner}/{project}/{model}/api/models/acme-vision/inspection/v3
Dağıtım/api/deployments/{owner}/{deployment}/api/deployments/acme-vision/edge-1
Görsel/api/images/{imageId}/api/images/65f1c0a2b3d4e5f601234567
  • {owner} kişisel bir kullanıcı adı veya takım çalışma alanı tanıtıcısıdır: 4-32 karakter, segmentler arasında tek tire içeren küçük harfli alfasayısal.
  • {dataset}, {project}, {model} ve {deployment}, 128 karaktere kadar aynı küçük harfli tireli deseni takip eder.
  • {imageId} ve {exportId}, API tarafından döndürülen 24 karakterlik onaltılık ID'lerdir.
  • Bir kaynağı PATCH aracılığıyla yeniden adlandırmak, görüntülenen name değerini ve URL adını birlikte değiştirir ve yanıt, takip etmeye devam edebilmen için güncel URL adını döndürür.
Çalışma Alanı Seçimi

Bir owner sorgu parametresi yoktur. Çalışma alanı kapsamlı yollar sahibi yolda taşır ve hesap kapsamlı uç noktalar (/api/account/summary, /api/api-keys, /api/storage, /api/billing/*, /api/trash, /api/integrations/buckets) API anahtarını oluşturan çalışma alanı üzerinde çalışır. Bir takım çalışma alanı üzerinde işlem yapmak için, o çalışma alanında oluşturulmuş bir API anahtarı kullan.

Hız Sınırları#

API, her API anahtarı için kayan pencere sınırları uygular. Her rota bir kategoriye girer ve her kategorinin bağımsız bir sayacı vardır, bu nedenle 20 tahmin isteği varsayılan kotanı tüketmez.

KategoriSınırUygulanan
Varsayılan100 istek/dkAşağıda listelenmeyen her rota
Eğitim10 istek/dkPOST /api/training/start
Yükleme10 istek/dkİmzalı yükleme URL'leri, yükleme tamamlama ve veri seti içe aktarma
Tahmin20 istek/dkPlatform API rotaları aracılığıyla model ve dağıtım çıkarımı
Dışa Aktar20 istek/dkModel dışa aktarma rotaları ve veri seti dışa aktarma/sürüm rotaları
İndirme30 istek/dkModel dosyası indirmeleri
Değişiklik (Mutation)10 istek/dkAPI anahtarlarını listeleme, bulut depolamayı bağlama veya keşfetme ve dağıtım PATCH eylemleri
Yükleme/Hydrate20 istek/dkPOST /api/datasets/{owner}/{dataset}/images (seçilen bir görüntü kümesini getirme)
Kümeleme (Clustering)10 istek/dkGET /api/datasets/{owner}/{dataset}/images/clustering

Faturalandırma ödemesi ve takım yönetimi gibi yalnızca tarayıcıya özel Platform rotaları, API anahtarı trafiği için geçerli olmayan kendi sınırlarına sahiptir.

Sınırlama uygulandığında, API hem başlıklar hem de bir JSON gövdesi ile birlikte 429 döndürür:

Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z
{
    "error": "Rate limit exceeded",
    "retryAfter": 12,
    "resetAt": "2026-02-21T12:34:56.000Z"
}

Özel Uç Noktalar (Sınırsız)#

Dağıtımın kendi serviceUrl adresini doğrudan (örneğin https://predict-abc123.run.app/predict) çağırdığınızda özel uç noktalar Platform API anahtarı oran sınırlarına tabi değildir. İş hacmi daha sonra dağıtılan servis yapılandırmasına bağlıdır.

Hız Sınırlarını Yönetme

Bir 429 aldığında, yeniden denemeden önce Retry-After saniye (veya X-RateLimit-Reset olana kadar) bekle. Üstel artış (exponential backoff) uygulaması için oran sınırı SSS kısmına göz at.

Yanıt Formatı#

Başarılı Yanıtlar#

Yanıtlar kaynak özelinde alanlara sahip JSON nesneleridir. Genel bir zarf yoktur: liste uç noktaları sayıların yanında adlandırılmış bir koleksiyon döndürür ve mutasyonlar değiştirilen tanımlayıcıları döndürür.

{
    "datasets": [{ "id": "65f1c0a2b3d4e5f601234567", "owner": "acme-vision", "dataset": "warehouse" }],
    "total": 1,
    "region": "us"
}

Veri içeren yanıtlar ayrıca region (us, eu veya ap), yani o çalışma alanı için depolama bölgesini içerir.

Hata Yanıtları#

Her hata yanıtı bir error mesajına sahip bir JSON nesnesidir:

{
    "error": "Dataset not found"
}
HTTP DurumuAnlamı
200Başarılı
201Oluşturuldu
202Kabul edildi, çalışma asenkron olarak devam ediyor
400Geçersiz yol, sorgu veya istek gövdesi
401Eksik veya geçersiz kimlik doğrulama
402Yetersiz kredi (eğitim)
403Yetersiz izinler, plan veya kota
404Kaynak bulunamadı
409Mevcut durumla çakışma (yinelenen ad, devam eden iş)
413Tahmin girdisi çok büyük
422Model sınıfları veri setiyle eşleşmiyor (otomatik etiketleme)
429İstek limiti aşıldı
500Sunucu hatası
502Üst akış sağlayıcı veya servis çağrısı başarısız oldu
503Bağımlı servis geçici olarak kullanılamıyor

Sayfalandırma#

Sayfalama stili koleksiyona bağlıdır:

StilUç NoktalarParametreler
Yalnızca sınırVeri setleri, projeler, modeller, dışa aktarmalar, dağıtımlar listelerilimit
Ofset ve sınırVeri seti görüntüleri, görüntü kümeleme, Explore aramasıoffset, limit, ayrıca yanıtta hasMore
İmleçVeri seti görüntüleri (büyük veri setleri)cursor, includeTotal, ayrıca nextCursor
Sayfa numarasıÇöp Kutusupage, limit, ayrıca totalPages
Okunamaz (opaque) sayfa belirteciDağıtım loglarıpageToken, ayrıca nextPageToken

Veri Kümeleri API'si#

YOLO modellerini eğitmek için etiketlenmiş görüntü veri setleri oluştur, göz at ve yönet. Datasets documentation sayfasına bakın.

Veri Kümelerini Listele#

GET /api/datasets/{owner}

Python SDK: client.datasets.list(owner)

Sahibin genel veri setlerini ve anahtarınızın bu çalışma alanını görüntüleyebildiği durumlarda özel veri setlerini döndürür.

Sorgu Parametreleri:

ParametreTipAçıklama
limittamsayıDöndürülecek maksimum veri seti (varsayılan: 1000, maks: 1000)
includeSamplesbooleanÖrnek görüntü önizlemelerini dahil et (varsayılan: true)
includeImageUrlsbooleanTam boyutta örnek görüntü yedek URL'lerini dahil et (varsayılan: false)
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/datasets/acme-vision?limit=10&includeSamples=false"

Yanıt:

{
    "datasets": [
        {
            "id": "65f1c0a2b3d4e5f601234567",
            "owner": "acme-vision",
            "dataset": "warehouse",
            "name": "Warehouse",
            "task": "detect",
            "visibility": "private",
            "imageCount": 1000,
            "classCount": 2,
            "classNames": ["person", "forklift"],
            "splits": { "train": 800, "val": 200, "test": 0, "labeled": 1000 },
            "annotationCount": 5400,
            "starCount": 3,
            "isStarred": false,
            "status": "ready",
            "createdAt": "2026-01-15T10:00:00Z",
            "updatedAt": "2026-01-16T08:30:00Z"
        }
    ],
    "total": 1,
    "region": "us"
}

Veri Kümesini Getir#

GET /api/datasets/{owner}/{dataset}

Python SDK: client.datasets.retrieve(owner, dataset)

dataset anahtarı altında tam veri seti nesnesini, classNames, splits, versions, source ve kullanıcı tanımlı metadata nesnesi dahil olmak üzere döndürür.

Veri Kümesi Oluştur#

POST /api/datasets

Python SDK: client.datasets.create(dataset=..., name=...)

Gövde:

{
    "dataset": "warehouse",
    "name": "Warehouse",
    "task": "detect",
    "description": "Forklift and pedestrian safety dataset",
    "classNames": ["person", "forklift"],
    "visibility": "private",
    "metadata": { "location": "factory-1", "reviewed": true },
    "owner": "acme-vision"
}
AlanTipGerekliAçıklama
datasetdizeEvetPlatform URL'lerinde kullanılan veri seti adı (küçük harfli, tireli, maks 128 karakter)
namedizeEvetGörünen ad (maks 100 karakter)
descriptiondizeHayırAçıklama (maks 1000 karakter)
taskdizeHayırGörev türü (varsayılan: detect)
classNamesdiziHayırİndeks sırasına göre sınıf adları (maks 25.000)
formatdizeHayırEtiketleme formatı: yolo (varsayılan), coco, raw, ndjson
visibilitydizeHayırpublic veya private
tagsdiziHayırHer biri 50 karakterlik en fazla 50 etiket
licensedizeHayırVeri seti lisans tanımlayıcısı
metadatanesneHayırÖzel JSON meta verileri
ownerdizeHayırTakım çalışma alanı tanıtıcısı; varsayılan olarak kişisel çalışma alanındır
Desteklenen Görevler

Bir veri seti oluştururken veya güncellerken geçerli task değerleri: detect, segment, semantic, depth, classify, pose ve obb. Derinlik veri setlerinin sınıfı yoktur.

Yanıt (201):

{
    "id": "65f1c0a2b3d4e5f601234567",
    "owner": "acme-vision",
    "dataset": "warehouse",
    "region": "us"
}

Veri Kümesini Güncelle#

PATCH /api/datasets/{owner}/{dataset}

Python SDK: client.datasets.update(owner, dataset)

Gövde (kısmi güncelleme):

{
    "name": "Warehouse Safety",
    "description": "New description",
    "visibility": "public",
    "metadata": { "location": "factory-2", "reviewed": true }
}

Kabul edilen alanlar: name, description, visibility, metadata, tags, classNames, classColors, format, task, license, iconColor, iconLetter ve starred. Özel meta verileri temizlemek için boş bir metadata nesnesi ({}) gönder. Meta veri anahtarları 128 karakterle ve serileştirilmiş nesne 500.000 karakterle sınırlıdır.

Yanıt:

{
    "success": true,
    "dataset": "warehouse-safety"
}

Yeniden adlandırma URL adını değiştirir, bu nedenle sonraki istekler için döndürülen dataset değerini kullan.

Veri Kümesini Sil#

DELETE /api/datasets/{owner}/{dataset}

Python SDK: client.datasets.delete(owner, dataset)

Veri setini 30 gün boyunca kurtarılabileceği trash alanına taşır.

Veri Kümesini Kopyala#

POST /api/datasets/{owner}/{dataset}/clone

Python SDK: client.datasets.clone(owner, dataset)

Görüntüleri ve etiketleriyle birlikte erişilebilir bir veri setini kişisel çalışma alanına veya bir takım çalışma alanına kopyalar.

İsteğe bağlı gövde (tüm alanlar isteğe bağlıdır):

{
    "dataset": "warehouse-copy",
    "name": "Warehouse Copy",
    "description": "Cloned for experimentation",
    "visibility": "private",
    "license": "CC-BY-4.0",
    "owner": "acme-vision"
}

Yanıt (201): id, owner, dataset, name, imageCount, classCount ve region. Bağlı bir depolama kaynağı tarafından desteklenen veri setleri, dosyaları kopyalanmadığı için 409 döndürür.

Veri Seti Dışa Aktarımını İndir#

GET /api/datasets/{owner}/{dataset}/export

Python SDK: client.datasets.export(owner, dataset)

İmzalı bir NDJSON indirme URL'si döndürür. Oluşturulduğundan beri hiçbir şey değişmediğinde önbelleğe alınmış dışa aktarımı yeniden kullanarak veri setinin mevcut durumunu dışa aktarmak için v değerini atla.

Sorgu Parametreleri:

ParametreTipAçıklama
vtamsayıKaydedilen sürüm numarası (1 tabanlı). Geçerli veri kümesi için atla.

Yanıt:

{
    "downloadUrl": "https://storage.googleapis.com/...&signature=...",
    "cached": true
}

Belirli bir sürümün istenmesi, cached yerine downloadUrl ve version döndürür.

Veri Kümesi Sürümü Oluştur#

POST /api/datasets/{owner}/{dataset}/export

Python SDK: client.datasets.create_export(owner, dataset)

Veri kümesinin değiştirilemez, numaralandırılmış bir anlık görüntüsünü oluşturur ve NDJSON dışa aktarımını depolar. Düzenleyici erişimi gerektirir.

Gövde (isteğe bağlı):

{
    "description": "Added 500 training images"
}

Yanıt:

{
    "version": 3,
    "downloadUrl": "https://storage.googleapis.com/...&signature=...",
    "reused": false
}

Veri kümesi önceki sürümden bu yana değiştirilmediğinde ve bunun yerine bu anlık görüntü döndürüldüğünde reused, true olur.

Sürüm Açıklamasını Güncelle#

PATCH /api/datasets/{owner}/{dataset}/export

Python SDK: client.datasets.update_export(owner, dataset, version=..., description=...)

Gövde:

{
    "version": 2,
    "description": "Fixed mislabeled classes"
}

Yanıt: {"ok": true}

Veri Kümesi Sürümünü Geri Yükle#

POST /api/datasets/{owner}/{dataset}/restore

Python SDK: client.datasets.restore(owner, dataset, version=...)

Görüntü baytlarını kopyalamadan, kaydedilmiş bir sürümden görüntüleri, ek açıklamaları ve sınıfları yeniden oluşturur.

Gövde:

{
    "version": 2
}

Yanıt: {"version": 2, "imageCount": 1000}

Veri Kümesi İstatistiklerini Al#

GET /api/datasets/{owner}/{dataset}/class-stats

Python SDK: client.datasets.class_stats(owner, dataset)

Sınıf başına ek açıklama sayıları, görüntü ve ek açıklama histogramları ile ısı haritaları döndürür. Büyük veri kümeleri örneklenir; bu durumda sampleSize, kaç görüntünün katkıda bulunduğunu bildirir.

Yanıt (kısaltılmış):

{
    "classes": [{ "classId": 0, "count": 1500, "imageCount": 450 }],
    "imageStats": {
        "widthHistogram": [{ "bin": 640, "count": 120, "size": 1 }],
        "heightHistogram": [{ "bin": 480, "count": 95, "size": 1 }],
        "pointsHistogram": [{ "bin": 4, "count": 200, "size": 1 }],
        "formatDistribution": { "jpg": 900, "png": 100 },
        "fileSizeHistogram": [{ "bin": 250000, "count": 300, "size": 50000 }],
        "objectsPerImageHistogram": [{ "bin": 5, "count": 210, "size": 1 }],
        "bboxWidthHistogram": [{ "bin": 120, "count": 340, "size": 20 }],
        "bboxHeightHistogram": [{ "bin": 90, "count": 300, "size": 20 }]
    },
    "locationHeatmap": {
        "bins": [
            [5, 10],
            [8, 3]
        ],
        "maxCount": 50
    },
    "dimensionHeatmap": {
        "bins": [
            [2, 5],
            [3, 1]
        ],
        "maxCount": 12,
        "minWidth": 10,
        "maxWidth": 1920,
        "minHeight": 10,
        "maxHeight": 1080
    },
    "classNames": ["person", "forklift"],
    "cached": true,
    "sampleSize": null
}

Sınıfları Yönet#

Sınıfları birleştir (ek açıklamaları hedef bir sınıfa yeniden ata, ardından kaynakları kaldır):

POST /api/datasets/{owner}/{dataset}/classes/merge

Python SDK: client.datasets.merge_classes(owner, dataset, source_class_ids=..., target_class_id=...)

{
    "sourceClassIds": [2, 4],
    "targetClassId": 1
}

Sınıfları sil (ek açıklamaları silinir ve kalan sınıf kimlikleri aşağı kaydırılır):

POST /api/datasets/{owner}/{dataset}/classes/delete

Python SDK: client.datasets.delete_classes(owner, dataset, class_ids=...)

{
    "classIds": [2, 4]
}

Her iki işlem de success, güncellenmiş classNames ve classColors ile neyin değiştiğine dair bir özet (mergedClassIds ve targetClassId ya da deletedClassIds ve deletedAnnotations) döndürür.

Sınıf Kimlikleri Konumsal'dır

Bir birleştirme veya silme işleminden sonra kalan kimlikler kaydığı için bu işlemler eşpotansiyel değildir. Başka bir sınıf işlemi gerçekleştirmeden önce geçerli sınıf indekslerini almak için veri kümesini yeniden getir.

Bölümleri Yeniden Dağıt#

POST /api/datasets/{owner}/{dataset}/splits/redistribute

Python SDK: client.datasets.redistribute_splits(owner, dataset, train=..., val=..., test=...)

Görüntüleri bölümler arasında rastgele yeniden atar. Üç yüzdenin toplamı 100 olmalıdır.

{
    "train": 80,
    "val": 20,
    "test": 0
}

Yanıt: success, ortaya çıkan splits sayıları ve modified (taşınan görüntü sayısı).

Veri Kümesi Gömülüleri (Embeddings)#

GET /api/datasets/{owner}/{dataset}/embeddings
POST /api/datasets/{owner}/{dataset}/embeddings
DELETE /api/datasets/{owner}/{dataset}/embeddings

Python SDK: client.datasets.embeddings(owner, dataset), client.datasets.create_embeddings(owner, dataset), client.datasets.delete_embeddings(owner, dataset)

GET, analiz özetini (analyzedAt, embeddingsCount, latestImageAt, activeJob) döndürür. POST, bir gömme analizi kuyruğa alır ve jobId içeren bir 202 döndürür. DELETE, etkin işi iptal eder ve iptal edilen iş kimliğini ya da null döndürür.

Görüntü Kümeleme#

GET /api/datasets/{owner}/{dataset}/images/clustering

Python SDK: client.datasets.clustering(owner, dataset)

Tamamlanan bir analizden UMAP 2D yerleşimini döndürür; offset ve limit (varsayılan ve en fazla 50.000) ile sayfalandırılmıştır. Her girdi id, umapX, umapY, split, classIds, width, height, bytes, labelCount ve missing içerir.

Veri Kümesinde Eğitilen Modelleri Listele#

GET /api/datasets/{owner}/{dataset}/models

Python SDK: client.datasets.models(owner, dataset)

Yanıt:

{
    "models": [
        {
            "id": "65f1c0a2b3d4e5f601234599",
            "owner": "acme-vision",
            "project": "inspection",
            "model": "v3",
            "name": "v3",
            "status": "completed",
            "task": "detect",
            "epochs": 100,
            "bestEpoch": 87,
            "metrics": { "mAP50": 0.85, "mAP50-95": 0.72, "precision": 0.88, "recall": 0.81 },
            "startedAt": "2026-01-14T22:00:00Z",
            "completedAt": "2026-01-15T10:00:00Z",
            "createdAt": "2026-01-14T21:55:00Z"
        }
    ],
    "count": 1
}

Veri Kümesi Görüntülerini Listele#

GET /api/datasets/{owner}/{dataset}/images

Python SDK: client.datasets.images(owner, dataset)

Sorgu Parametreleri:

ParametreTipAçıklama
limittamsayıDöndürülecek maksimum görüntü sayısı (varsayılan: 50, maks: 5000)
offsettamsayıAtlanacak görüntüler (varsayılan: 0)
cursordizeİmleç sayfalaması için önceki sayfanın son görüntü kimliği
includeTotalbooleanToplam eşleşen sayısını dahil et (varsayılan: true)
splitdizeBölüme (split) göre filtrele: train, val, test
hasLabelbooleanEk açıklama durumuna göre filtrele
hasErrorbooleanİşleme hatası durumuna göre filtrele
classIdsdizeVirgülle ayrılmış sınıf kimlikleri; bunlardan herhangi birini içeren görüntüleri döndürür
searchdizeDosya adı ve özel meta veriler üzerinde alt dize eşleşmesi (maks 200 karakter)
sortdizenewest (varsayılan), oldest, name-asc, name-desc, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc
includeThumbnailsbooleanİmzalı küçük resim (thumbnail) URL'lerini dahil et (varsayılan: true)
includeImageUrlsbooleanİmzalı tam boyutlu görüntü URL'lerini dahil et (varsayılan: false)
includeLabelsbooleanÜst sınırı belirlenmiş önizleme ek açıklamalarını dahil et (varsayılan: false)

Yanıt:

{
    "images": [
        {
            "id": "65f1c0a2b3d4e5f601234567",
            "hash": "9f2c1d4b6a8e0f3c5d7b9a1e2f4c6d8b",
            "ext": "jpg",
            "name": "aisle-04.jpg",
            "thumbnailUrl": "https://storage.googleapis.com/...&signature=...",
            "width": 1920,
            "height": 1080,
            "split": "train",
            "labelCount": 6,
            "bytes": 284213,
            "error": null
        }
    ],
    "total": 1000,
    "hasMore": true,
    "classes": ["person", "forklift"],
    "errorCount": 0,
    "nextCursor": "65f1c0a2b3d4e5f601234567"
}

Seçili Görselleri Getir#

POST /api/datasets/{owner}/{dataset}/images

Python SDK: client.datasets.selected_images(owner, dataset, image_ids=...)

En fazla 1.000 sağlanan görüntü kimliği için aynı görüntü şeklini döndürür ve liste işlemiyle aynı filtre ile URL sorgu parametrelerini kabul eder.

{
    "imageIds": ["65f1c0a2b3d4e5f601234567", "65f1c0a2b3d4e5f601234568"]
}

Veri Kümesi Verilerini Al#

POST /api/datasets/{owner}/{dataset}/ingest

Python SDK: client.datasets.ingest(owner, dataset, body=...)

Tamamlanmış bir yüklemeyi, uzak bir arşivi veya bağlı bir depolama kaynağını mevcut bir veri kümesine işler. Tam olarak bir kaynak sağlayın:

AlanTipAçıklama
sessionIddizePOST /api/upload/signed-url adresinden, halihazırda tamamlanmış yükleme oturumu
sourceUrldizeBir ZIP, TAR, TAR.GZ, TGZ veya NDJSON dosyasının genel HTTP ya da HTTPS URL'si (maks 4096 karakter)
referencenesneBağlı bir kaynak: bulut depolama (provider: "cloud", integrationId, target, prefix) veya Şirket İçi (provider: "local", keyId, root, prefix)
targetSplitdizetrain, val veya test; arşivin bölünmüş yapısını geçersiz kılar
conflictPolicydizeDosya adı veya içerik çakışmaları için skip, keep_both veya replace
classMappingnesneGelen sınıf adlarını bir sınıf indeksine, mevcut ya da yeni bir sınıf adın veya atlamak için null değerine eşler
imageMetadatanesneHer görüntünün arşive göreli yolu veya NDJSON file değeri tarafından anahtarlanmış özel meta veriler

Yükleme oturumları, POST /api/upload/signed-url'e iletilen assetId tarafından bir veri kümesine bağlanır ve alma işlemi, farklı bir veri kümesine ait bir oturumu reddeder.

Gövde (yüklenen arşiv):

{
    "sessionId": "session_abc123",
    "targetSplit": "train"
}

Gövde (uzak arşiv veya NDJSON):

{
    "sourceUrl": "https://example.com/my-dataset.zip"
}

Gövde (daha sonraki bir alımda etiketleri içe aktarma):

{
    "sessionId": "session_abc123",
    "classMapping": { "person": 0, "automobile": "forklift", "background": null }
}

Gövde (görüntü başına meta veri ekleme):

{
    "sessionId": "session_abc123",
    "imageMetadata": {
        "airbus-wing.jpg": { "aircraft": { "family": "A350" }, "inspectionStatus": "reviewed" },
        "images/tail.jpg": { "aircraft": { "family": "A320" }, "inspectionSeverity": 2 }
    }
}

Meta veri anahtarları, klasörler dahil olmak üzere arşiv içindeki normalleştirilmiş yol ile eşleşmelidir. NDJSON içe aktarımları için her kayıt, eşleşen bir imageMetadata girdisine göre önceliğe sahip olan kendi metadata nesnesini taşıyabilir. Arşiv yolları 1.024 karakterle, üst düzey meta veri anahtarları 128 karakterle ve her meta veri nesnesinin yanı sıra tüm imageMetadata eşlemesi 500.000 serileştirilmiş karakterle sınırlıdır.

Sınıf Eşleme

İlk veri alımı arşivden otomatik olarak sınıflar oluşturur. Daha sonraki alımlarda, classMapping dışındaki arşiv sınıfları, mevcut veri kümesi sınıflarına karşı büyük/küçük harfe duyarsız bir eşleşmeye geri döner. Etiketler yalnızca null öğesine açıkça eşlenen veya eşleşen mevcut bir sınıfı olmayan sınıflar için atlanır.

Yanıt (201):

{
    "jobId": "65f1c0a2b3d4e5f6012345aa",
    "status": "queued"
}
graph LR
    A[POST /api/datasets]:::start --> B[POST /api/upload/signed-url]:::proc
    B --> C[PUT archive to signed URL]:::proc
    C --> D[POST /api/upload/complete]:::proc
    D --> E["POST /api/datasets/{owner}/{dataset}/ingest"]:::proc
    E --> F[Process archive]:::proc
    F --> G[Dataset ready]:::out

    classDef start fill:#4CAF50,color:#fff
    classDef proc fill:#2196F3,color:#fff
    classDef out fill:#9C27B0,color:#fff
Python kullanarak meta verilerle birlikte tek bir görsel yükle

Aynı kod bir görsel grubunu da işler: ZIP dosyasına daha fazla dosya ve imageMetadata içine eşleşen girdiler ekle.

import io
import zipfile
from pathlib import Path

import requests

api = "https://platform.ultralytics.com/api"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
owner, dataset = "acme-vision", "warehouse"
dataset_id = "65f1c0a2b3d4e5f601234567"  # id returned by POST /api/datasets
image_path = Path("airbus-wing.jpg")

archive = io.BytesIO()
with zipfile.ZipFile(archive, "w", zipfile.ZIP_DEFLATED) as zf:
    zf.write(image_path, image_path.name)
data = archive.getvalue()

signed = requests.post(
    f"{api}/upload/signed-url",
    headers=headers,
    json={
        "assetType": "datasets",
        "assetId": dataset_id,
        "filename": "images.zip",
        "contentType": "application/zip",
        "totalBytes": len(data),
    },
)
signed.raise_for_status()
upload = signed.json()

requests.put(upload["uploadUrl"], headers={"Content-Type": "application/zip"}, data=data).raise_for_status()
requests.post(
    f"{api}/upload/complete",
    headers=headers,
    json={"sessionId": upload["sessionId"]},
).raise_for_status()

ingest = requests.post(
    f"{api}/datasets/{owner}/{dataset}/ingest",
    headers=headers,
    json={
        "sessionId": upload["sessionId"],
        "imageMetadata": {
            "airbus-wing.jpg": {
                "aircraft": {"family": "A350", "section": "wing"},
                "inspectionStatus": "reviewed",
            }
        },
    },
)
ingest.raise_for_status()
print(ingest.json())

Görüntüler API#

Veri kümesi görüntülerini 24 karakterlik görüntü kimliklerine göre inceleyin, not edin, taşıyın ve silin. Bkz. Ek açıklama belgeleri.

Görüntü Al#

GET /api/images/{imageId}

Python SDK: client.images.retrieve(image_id)

metadata (özel, kullanıcı tanımlı), properties (dosya adı, hash, boyutlar, bölme, sayımlar, zaman damgaları), labels ve veri kümesinin classNames değerini döndürür.

Görüntüyü Güncelle#

PATCH /api/images/{imageId}

Python SDK: client.images.update(image_id, body=...)

Ek açıklamaları veya özel meta verileri değiştirir — her ikisini değil, iki şekilden birini gönderin.

Gövde (ek açıklamalar):

{
    "labels": [
        { "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] },
        { "classId": 1, "segments": [0.1, 0.2, 0.3, 0.2, 0.2, 0.4] }
    ]
}

Gövde (meta veriler):

{
    "metadata": { "location": "strasbourg", "reviewed": true }
}
Koordinat Biçimi

Etiket koordinatları 0 ile 1 arasındaki YOLO normalleştirilmiş değerlerini kullanır. Sınırlayıcı kutular [x_center, y_center, width, height] kullanır. Bölütleme etiketleri segments, çokgen köşelerinin düzleştirilmiş bir listesi [x1, y1, x2, y2, ...] kullanır. Poz etiketleri, görünürlüğün geleneksel olarak 0, 1 veya 2 kullandığı çiftler [x1, y1, x2, y2, ...] veya üçlüler [x1, y1, v1, x2, y2, v2, ...] şeklinde tutarlı bir düz biçimde keypoints kullanır. Yönlendirilmiş kutular obb köşelerini kullanır. Kaydedilen koordinatlar 5 ondalık basamağa yuvarlanır ve bir görüntü en fazla 10.000 ek açıklama kabul eder.

Görüntüyü Sil#

DELETE /api/images/{imageId}

Python SDK: client.images.delete(image_id)

Tek bir görüntüyü ve ek açıklamalarını kalıcı olarak siler.

Görüntüyü Otomatik Olarak Etiketle#

POST /api/images/{imageId}/predict

Python SDK: client.images.predict(image_id, model_id=...)

Görüntü üzerinde YOLO çıkarımı çalıştırır ve tahmin edilen ek açıklamaları döndürür. Bunları kaydetmez; sonuçlardan memnun kaldığınızda bunları PATCH /api/images/{imageId} ile geri yazın.

AlanTipGerekliAçıklama
modelIddizeEvetTam nitelikli model URI'si, ul://{owner}/{project}/{model}
confidencekayan noktaHayırGüven eşiği, 0,01 – 1,0 (varsayılan: 0,25)
ioukayan noktaHayırMaksimum olmayan bastırma için IoU eşiği, 0,0 – 0,95 (varsayılan: 0,7)

Yanıt: success, predictions (ek açıklama nesneleri), modelUsed ve inferenceTime. Sınıfları veri kümesiyle eşleşmeyen bir model 422 döndürür.

Toplu Görüntü Taşıma#

PATCH /api/images/bulk

Python SDK: client.images.update_bulk(image_ids=..., split=...)

En fazla 1.000 görüntüyü bir veri kümesinden farklı bir bölüme taşır.

{
    "imageIds": ["65f1c0a2b3d4e5f601234567"],
    "split": "val",
    "conflictPolicy": "skip"
}

Dosya adı veya içerik çakışmaları, sepet genelinde skip, keep_both veya replace arasından bir conflictPolicy seçeneği belirleyene kadar 409 döndürür. Yanıt modifiedCount, skippedCount ve targetSplit bildirir.

Toplu Görüntü Silme#

DELETE /api/images/bulk

Python SDK: client.images.delete_bulk(image_ids=...)

{
    "imageIds": ["65f1c0a2b3d4e5f601234567", "65f1c0a2b3d4e5f601234568"]
}

Tek bir veri kümesinden en fazla 1.000 görüntüyü siler ve deletedCount ile deletedImageIds döndürür.

İmzalı Görüntü URL'lerini Getir#

POST /api/images/urls

Python SDK: client.images.urls(image_ids=...)

Tek bir veri kümesinden en fazla 100 görüntü kimliği için geçici imzalı URL'ler döndürür.

{
    "imageIds": ["65f1c0a2b3d4e5f601234567"]
}

Yanıt: İkisi de görüntü kimliğine göre anahtarlanmış urls ve thumbnails.


Projeler API'si#

Modellerinizi projeler halinde düzenleyin. Her model bir projeye aittir. Bkz. Projeler belgeleri.

Projeleri Listele#

GET /api/projects/{owner}

Python SDK: client.projects.list(owner)

Sorgu Parametreleri:

ParametreTipAçıklama
limittamsayıDöndürülecek maksimum proje sayısı (varsayılan: 20, maks: 500)

Projeyi Getir#

GET /api/projects/{owner}/{project}

Python SDK: client.projects.retrieve(owner, project)

project nesnesini, model başına özetlerin (durum, metrikler, dönemler, ağırlıklar, eğitim argümanları) models dizisini ve isOwner değerini döndürür.

Proje Oluştur#

POST /api/projects

Python SDK: client.projects.create(project=..., name=...)

AlanTipGerekliAçıklama
projectdizeEvetPlatform URL'lerinde kullanılan proje adı
namedizeEvetGörünen ad (maks 100 karakter)
descriptiondizeHayırAçıklama (maks 1000 karakter)
visibilitydizeHayırpublic veya private
tagsdiziHayırEn fazla 50 etiket
licensedizeHayırProje lisans tanımlayıcısı
metadatanesneHayırÖzel JSON meta verileri
ownerdizeHayırTakım çalışma alanı tanıtıcısı; varsayılan olarak kişisel çalışma alanındır
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "project": "inspection",
    "name": "Inspection",
    "description": "Detection experiments",
    "metadata": {"department": "manufacturing", "cost_center": "cv-01"}
  }' \
  https://platform.ultralytics.com/api/projects

Yanıt (201): id, owner, project, region.

Projeyi Güncelle#

PATCH /api/projects/{owner}/{project}

Python SDK: client.projects.update(owner, project)

Kabul edilen alanlar: name, description, visibility, metadata, tags, license, archived, iconColor, iconLetter, viewPreferences ve starred.

{
    "metadata": { "department": "research", "program": "inspection" }
}

Temizlemek için boş bir metadata nesnesi ({}) gönderin. Proje meta verileri, veri kümesi meta verileriyle aynı 128 karakterlik anahtar ve 500.000 karakterlik serileştirilmiş nesne sınırlarını kullanır.

Projeyi Sil#

DELETE /api/projects/{owner}/{project}

Python SDK: client.projects.delete(owner, project)

Projeyi ve modellerini çöp kutusuna taşıyarak cascadedModels döndürür.

Projeyi Kopyala#

POST /api/projects/{owner}/{project}/clone

Python SDK: client.projects.clone(owner, project)

Erişilebilir bir projeyi ve tamamlanan modellerini klonlar. İsteğe bağlı gövde project, name, description, visibility, license ve bir hedef owner kabul eder.


Modeller API'si#

Eğitilmiş YOLO modellerini yönetin; metrikleri görüntüleyin, ağırlıkları indirin, çıkarım çalıştırın ve eğitimi izleyin. Bkz. Modeller belgeleri.

Bir Projedeki Modelleri Listele#

GET /api/models/{owner}/{project}

Python SDK: client.models.list(owner, project)

Sorgu Parametreleri:

ParametreTipAçıklama
limittamsayıDöndürülecek maksimum model sayısı (varsayılan: 20, maks: 100)

Modeli Getir#

GET /api/models/{owner}/{project}/{model}

Python SDK: client.models.retrieve(owner, project, model)

Sorgu Parametreleri:

ParametreTipAçıklama
analysistamsayıModel yerine görüntü başına doğrulama analizi döndürmek için 1 olarak ayarla

Varsayılan yanıt, model nesnesini — durum, görev, metrikler, trainArgs, trainResults, classNames, computeCost, metadata ve daha fazlası — artı isOwner içerir.

Model Oluştur#

POST /api/models

Python SDK: client.models.create(body=...)

Ağırlık ekleyebileceğiniz veya eğitebileceğiniz eğitilmemiş bir model kaydı oluşturur.

AlanTipGerekliAçıklama
projectdizeEvetHedef proje adı
ownerdizeHayırÇalışma alanı kolu; varsayılan olarak kişisel çalışma alanınızdır
modeldizeHayırPlatform URL'lerinde kullanılan model adı; atlandığında oluşturulur
namedizeHayırGörünen ad (yalnızca model ile birlikte kabul edilir)
descriptiondizeHayırAçıklama (maks 1000 karakter)
taskdizeHayırdetect, segment, semantic, depth, classify, pose veya obb
metadatanesneHayırÖzel JSON meta verileri
trainArgsnesneHayırKaydedilecek eğitim argümanları
metricsnesneHayırmAP50, mAP50-95, precision, recall gibi metrikler
epochssayıHayırHalihazırda eğitilmiş bir model için dönem sayısı
versiondizeHayırSürüm etiketi (maks 50 karakter)

Yanıt (201): id, owner, project, model, region.

Model Dosyası Yükleme

.pt ağırlıklarını eklemek için, assetType: "models" ile imzalı bir yükleme URL'si ve bu modelin id değerini assetId olarak isteyin, PUT dosyayı döndürülen URL'ye gönderin, ardından döndürülen sessionId ile POST /api/upload/complete öğesini çağırın.

Modeli Güncelle#

PATCH /api/models/{owner}/{project}/{model}

Python SDK: client.models.update(owner, project, model)

Kabul edilen alanlar şunları içerir: name, description, color, metadata, status, license, datasetSlug, trainArgs, trainResults, epochs, bestEpoch, bestFitness, version, trainingError ve starred.

{
    "metadata": { "release": "candidate-3", "reviewed": true }
}

Özel metadata, trainArgs, environment ve trainResults gibi eğitime ait alanlardan ayrıdır ve veri kümesi meta verileriyle aynı boyut sınırlarını kullanır.

Modeli Sil#

DELETE /api/models/{owner}/{project}/{model}

Python SDK: client.models.delete(owner, project, model)

Modeli 30 gün boyunca çöp kutusuna taşır.

Model Dosyalarını İndir#

GET /api/models/{owner}/{project}/{model}/files

Python SDK: client.models.files(owner, project, model)

Modelin ağırlıkları için kısa süreli imzalı URL'ler döndürür.

{
    "files": [
        {
            "name": "best.pt",
            "size": 6534127,
            "downloadUrl": "https://storage.googleapis.com/...&signature=..."
        }
    ]
}

Modeli Kopyala#

POST /api/models/{owner}/{project}/{model}/clone

Python SDK: client.models.clone(owner, project, model, project_body=...)

Erişilebilir bir modeli mevcut bir projeye kopyalar.

{
    "owner": "acme-vision",
    "project": "inspection",
    "model": "v3-copy",
    "name": "V3 Copy",
    "description": "Cloned from a public model"
}
AlanTipGerekliAçıklama
projectdizeEvetHedef proje adı
ownerdizeHayırHedef çalışma alanı; varsayılan olarak kişisel çalışma alanındır
modeldizeHayırHedef model adı
namedizeHayırHedef görünen ad
descriptiondizeHayırKlon için açıklama

Çıkarımı Çalıştır.#

POST /api/models/{owner}/{project}/{model}/predict

Python SDK: client.models.predict(owner, project, model, body=...)

Genel modeller kimlik doğrulaması olmadan tahmin edilebilir. Özel ve paylaşılan modeller, üst projeye erişimi olan bir API anahtarı gerektirir.

Çok Parçalı Form:

ParametreTipVarsayılanAralıkAçıklama
filedosya--Resim veya video dosyası (source ayarlanmadığı sürece gereklidir)
confkayan nokta0.250.01 – 1.0Minimum güven eşiği
ioukayan nokta0.70.0 – 0.95NMS IoU eşiği
imgsztamsayı64032 – 1280Piksel cinsinden giriş görüntüsü boyutu
normalizeboolfalse-Sınırlayıcı kutu koordinatlarını 0 – 1 olarak döndür
decimalstamsayı50 – 10Koordinat değerleri için ondalık hassasiyeti
bitstamsayı88, 12, 16Derinlik haritası nicelemesi, yalnızca derinlik modelleri
sourcedize--Resim URL'si veya base64 dizesi (file seçeneğinin alternatifi)

file veya source değerlerinden birini sağlayın. Derinlik modelleri, derinlik haritasının PNG nicelemesini seçmek için bits (8, 12 veya 16) değerini de kabul eder. Servisin girdi sınırlarını aşan istekler 413 döndürür.

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@image.jpg" \
  -F "conf=0.5" \
  https://platform.ultralytics.com/api/models/acme-vision/inspection/v3/predict

Yanıt:

images içindeki her bir girdi shape, speed, results ve yoğun tahmin görevleri için bir semantic_mask veya depth PNG yükü taşır (varsayılan 8 bitlik harita için 255 ve bits değeri 12 veya 16 olduğunda 65535 böleni ile derinlik değerleri pixel × max / divisor olur). metadata nesnesi resim sayısını, işlev zamanlamalarını, görevi ve servis sürümlerini bildirir. Dahili model yolları asla döndürülmez.

{
    "images": [
        {
            "shape": [1080, 1920],
            "speed": { "preprocess": 2.1, "inference": 12.4, "postprocess": 1.3 },
            "results": [
                {
                    "class": 0,
                    "name": "person",
                    "confidence": 0.92,
                    "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
                }
            ]
        }
    ],
    "metadata": {
        "imageCount": 1,
        "functionTimeAlive": 184.2,
        "functionTimeCall": 0.31,
        "task": "detect",
        "version": { "ultralytics": "8.4.120" }
    }
}

Eğitim İlerlemesini Kontrol Et#

GET /api/models/{owner}/{project}/{model}/training

Python SDK: client.models.training(owner, project, model)

Durum, epoch ilerlemesi, zamanlama, hesaplama detayları, eğitim argümanları, epoch metrikleri ve güvenli hata detayları içeren job veya model hiç eğitilmemişse null döndürür. Genel projelerdeki modeller kimlik doğrulaması olmadan okunabilir.

Eğitimi İptal Et#

DELETE /api/models/{owner}/{project}/{model}/training

Python SDK: client.models.delete_training(owner, project, model)

Çalışan hesaplama örneğini sonlandırır ve işi iptal edildi olarak işaretler. Eğitim artık aktif değilse 409 döndürür.


Eğitim API'si#

Bulut GPU'larında YOLO eğitimini başlat ve ilerlemeyi gerçek zamanlı olarak izle. Bkz. Bulut Eğitimi belgeleri.

graph LR
    A[POST /api/training/start]:::start --> B[Job Created]:::proc
    B --> C{Training}:::decide
    C -->|progress| D[GET .../training]:::proc
    C -->|cancel| E[DELETE .../training]:::error
    C -->|complete| F[Model Ready]:::out
    F --> G[Deploy or Export]:::proc

    classDef start fill:#4CAF50,color:#fff
    classDef proc fill:#2196F3,color:#fff
    classDef decide fill:#FF9800,color:#fff
    classDef out fill:#9C27B0,color:#fff
    classDef error fill:#F44336,color:#fff

GPU Uygunluğunu Getir#

GET /api/training/gpu-availability

Python SDK: client.training.gpu_availability()

GPU ID'sine göre anahtarlanmış mevcut stok durumunu döndürür. Genel ve kimlik doğrulaması gerektirmez; bir API anahtarı gerektiren yönetilen eğitim kapasitesini dahil etmek için managed=true değerini iletin.

Eğitimi Başlat#

POST /api/training/start

Python SDK: client.training.start(model_id=..., train_args=...)

AlanTipGerekliAçıklama
modelIddizeEvetEğitilecek modelin ID'si
trainArgsnesneEvetYOLO eğitim argümanları; model, data ve epochs gereklidir
gpuTypedizeHayırKullanılacak bulut GPU (varsayılan: rtx-4090)
captureDatasetVersionbooleanHayırBu çalıştırma için değiştirilemez bir veri seti sürümü kaydet (varsayılan: false)
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "modelId": "65f1c0a2b3d4e5f601234599",
    "gpuType": "rtx-4090",
    "trainArgs": {
      "model": "yolo26n.pt",
      "data": "ul://acme-vision/datasets/warehouse",
      "epochs": 100,
      "imgsz": 640,
      "batch": 16
    }
  }' \
  https://platform.ultralytics.com/api/training/start

Yanıt:

{
    "modelId": "65f1c0a2b3d4e5f601234599",
    "status": "starting",
    "gpuType": "rtx-4090",
    "estimatedCost": { "pricePerHour": 0.69, "gpuMemoryGb": 24 },
    "billing": {
        "estimatedCostCents": 138,
        "estimatedCostDisplay": "$1.38",
        "balanceCents": 2500
    }
}

Eğitim, kredi bakiye çok düşük olduğunda 402 ve istenen GPU için uygun kapasite olmadığında 503 döndürür.

GPU Türleri

rtx-2000-ada ile b300 arasında, rtx-4090, l40s, a100-80gb-pcie, a100-80gb-sxm, rtx-pro-6000, h100-sxm, h200-sxm ve b200 dahil olmak üzere 26 GPU türü mevcuttur. Fiyatlandırma ile tam liste için bkz. Bulut Eğitimi.


Dışa Aktarma API'si#

Modelleri uçta dağıtım için ONNX, TensorRT, CoreML ve LiteRT gibi optimize edilmiş formatlara dönüştür. Bkz. Dağıtım belgeleri.

Dışa Aktarımları Listele#

GET /api/models/{owner}/{project}/{model}/exports

Python SDK: client.exports.list(owner, project, model)

Sorgu Parametreleri:

ParametreTipAçıklama
statusdizequeued, starting, running, completed, failed veya cancelled ile filtrele
limittamsayıDöndürülecek maksimum dışa aktarma sayısı (varsayılan: 20, maks: 100)

Dışa Aktarma Oluştur#

POST /api/models/{owner}/{project}/{model}/exports

Python SDK: client.exports.create(owner, project, model, format=...)

AlanTipGerekliAçıklama
formatdizeEvetHedef dışa aktarma formatı (aşağıdaki tabloya bakın)
gpuTypedizeKoşulluformat, engine olduğunda gereklidir; desteklenen bir GPU veya Jetson hedefi kullan
argsnesneHayırDışa aktarma seçenekleri: imgsz, quantize, dynamic, simplify, opset, conf, iou, batch, workspace, nms, end2end, optimize, keras ve name (RKNN, QNN, Hailo ve Ascend formatları için cihaz hedefi)
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"format": "onnx", "args": {"imgsz": 640, "quantize": 16}}' \
  https://platform.ultralytics.com/api/models/acme-vision/inspection/v3/exports

Yanıt (201): id, format, status (queued veya running), gpuType, region. Halihazırda devam eden eşdeğer bir dışa aktarma 409 döndürür.

Desteklenen Formatlar:

Aşağıdaki paylaşılan dışa aktarma tablosundan format argümanını kullanın. PyTorch kaynak formatıdır ve bir API dışa aktarma hedefi değildir.

Formatformat ArgümanıModelMeta verilerArgümanlar
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n.aimodelimgsz, batch, quantize

Dışa Aktarma Durumunu Al#

GET /api/models/{owner}/{project}/{model}/exports/{exportId}

Python SDK: client.exports.retrieve(owner, project, model, export_id)

status, format, args, gpuType, zaman damgaları ve — tamamlandığında — size, downloadUrl ve downloadFilename içeren bir file nesnesi ile birlikte export nesnesini döndürür.

Dışa Aktarmayı İptal Et veya Sil#

DELETE /api/models/{owner}/{project}/{model}/exports/{exportId}

Python SDK: client.exports.delete(owner, project, model, export_id)

Aktif bir dışa aktarmayı iptal eder veya tamamlanmış bir dışa aktarmayı ve dosyasını siler. Yanıt hangisinin gerçekleştiğini bildirir:

{
    "success": true,
    "action": "cancelled"
}

Dağıtım API'si#

Modelleri sağlık kontrolleri ve izleme ile özel çıkarım uç noktalarına dağıtın. Bkz. Uç Noktalar belgeleri.

graph LR
    A[Create]:::start --> B[Deploying]:::proc
    B --> C[Ready]:::out
    C -->|action stop| D[Stopped]:::extern
    C -->|action replace| B
    D -->|action start| C
    C -->|delete| E[Deleted]:::error
    D -->|delete| E
    C -->|predict| F[Inference Results]:::out

    classDef start fill:#4CAF50,color:#fff
    classDef proc fill:#2196F3,color:#fff
    classDef out fill:#9C27B0,color:#fff
    classDef error fill:#F44336,color:#fff
    classDef extern fill:#607D8B,color:#fff

Dağıtımları Listele#

GET /api/deployments/{owner}

Python SDK: client.deployments.list(owner)

Sorgu Parametreleri:

ParametreTipAçıklama
statusdizecreating, deploying, ready, stopping, stopped veya failed
modeldize{project}/{model} ile filtrele, örneğin inspection/v3
limittamsayıDöndürülecek maksimum dağıtım sayısı (varsayılan: 20, maks: 100)

Anonim çağrıcılar tek bir genel modelle filtreleme yapmalıdır; tüm çalışma alanını listelemek kimlik doğrulaması gerektirir.

Dağıtım Oluştur#

POST /api/deployments/{owner}

Python SDK: client.deployments.create(owner, project=..., model=..., deployment=..., name=..., region=...)

Gövde:

{
    "project": "inspection",
    "model": "v3",
    "deployment": "edge-1",
    "name": "Edge 1",
    "region": "us-central1"
}
AlanTipGerekliAçıklama
projectdizeEvetModeli içeren proje
modeldizeEvetDağıtılacak model
deploymentdizeEvetPlatform URL'lerinde kullanılan dağıtım adı
namedizeEvetGörünen ad
regiondizeEvetDesteklenen 42 dağıtım bölgesinden biri

Yanıt (201): id, deployment, status (creating), message ve region.

Kaynak Boyutlandırma

CPU, bellek ve örnek ölçeklendirme, plan limitlerinizden Platform tarafından yönetilir ve oluşturma isteği bir kaynak yapılandırması kabul etmez. Mevcut değerler her dağıtım okumasında resources nesnesinde döndürülür.

Bölge Seçimi

En düşük gecikme için kullanıcılarınıza yakın bir bölge seçin. Platform arayüzü mevcut tüm 42 bölge için gecikme tahminlerini gösterir.

Dağıtımı Getir#

GET /api/deployments/{owner}/{deployment}

Python SDK: client.deployments.retrieve(owner, deployment)

status, statusMessage, region, serviceUrl ve resources ile birlikte deployment nesnesini döndürür.

Bir Dağıtımı Başlat, Durdur veya Değiştir#

PATCH /api/deployments/{owner}/{deployment}

Python SDK: client.deployments.update(owner, deployment, body=...)

Tek bir action alanı işlemi seçer:

{ "action": "start" }

Değiştirme işlemi, dağıtım kimliğini, bölgeyi ve uç nokta URL'sini korurken yeni bir revizyon yayınlar; dağıtım başarısız olursa mevcut revizyon yayında kalır. Yedek model, anahtarınızın erişebileceği ağırlıklara sahip tamamlanmış bir model olmalıdır. Tamamlanan işlemler status ready veya stopped ile 200 döndürür; hâlâ yayınlanmakta olan işlemler ise deploying veya stopping ile 202 döndürür.

Dağıtımı Sil#

DELETE /api/deployments/{owner}/{deployment}

Python SDK: client.deployments.delete(owner, deployment)

Çıkarım uç noktasını kalıcı olarak kaldırır.

Sağlık Kontrolü#

GET /api/deployments/{owner}/{deployment}/health

Python SDK: client.deployments.health(owner, deployment)

Uç noktaya ping atar ve ısıtır, healthy, latencyMs ve yukarı yönlü status kodunu döndürür.

Bir Dağıtımda Çıkarım Çalıştır#

POST /api/deployments/{owner}/{deployment}/predict

Python SDK: client.deployments.predict(owner, deployment, body=...)

Bir görüntüyü veya videoyu özel uç noktadan geçirir. İstek ve yanıt sözleşmeleri model çıkarımı ile eşleşir.

Çok Parçalı Form:

ParametreTipVarsayılanAralıkAçıklama
filedosya--Resim veya video dosyası (source ayarlanmadığı sürece gereklidir)
confkayan nokta0.250.01 – 1.0Minimum güven eşiği
ioukayan nokta0.70.0 – 0.95NMS IoU eşiği
imgsztamsayı64032 – 1280Piksel cinsinden giriş görüntüsü boyutu
normalizeboolfalse-Sınırlayıcı kutu koordinatlarını 0 – 1 olarak döndür
decimalstamsayı50 – 10Koordinat değerleri için ondalık hassasiyeti
bitstamsayı88, 12, 16Derinlik haritası nicelemesi, yalnızca derinlik modelleri
sourcedize--Resim URL'si veya base64 dizesi (file seçeneğinin alternatifi)

Metrikleri Getir#

GET /api/deployments/{owner}/{deployment}/metrics

Python SDK: client.deployments.metrics(owner, deployment)

Sorgu Parametreleri:

ParametreTipAçıklama
rangedize1h, 6h, 24h (varsayılan), 7d veya 30d
sparklinebooleanTam seriler yerine kompakt kontrol paneli özetini döndür (varsayılan: false)

Tam yanıt summary (istek toplamları, hata oranı, ortalama ve p50/p95/p99 gecikme) ve timeSeries (istekler, hatalar, gecikme, CPU, bellek, örnek sayısı) içerir. Çizgi grafik yanıtı requests24h, totalRequests, errorRate ve avgLatencyMs döndürür.

Günlükleri Getir#

GET /api/deployments/{owner}/{deployment}/logs

Python SDK: client.deployments.logs(owner, deployment)

Sorgu Parametreleri:

ParametreTipAçıklama
severitydizeVirgülle ayrılmış: DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY
limittamsayıDöndürülecek girdiler (varsayılan: 50, maks: 200)
pageTokendizeÖnceki bir yanıttan sayfalama belirteci

Çöp Kutusu (Trash) API#

Yumuşak silinmiş projeleri, veri setlerini ve modelleri görüntüle, geri yükle ve kalıcı olarak sil. Öğeler 30 gün sonra otomatik olarak temizlenir. Bkz. Çöp Kutusu belgeleri.

Çöp Kutusunu Listele#

GET /api/trash

Python SDK: client.lifecycle.trash()

Sorgu Parametreleri:

ParametreTipAçıklama
typedizeall (varsayılan), project, dataset veya model
pagetamsayıSayfa numarası (varsayılan: 1)
limittamsayıSayfa başına öğe sayısı (varsayılan: 50, maks: 200)

Yanıt items (her biri daysRemaining içerir), total, page, limit, totalPages ve türe göre toplamları içeren bir summary içerir.

Öğeyi Geri Yükle#

POST /api/trash

Python SDK: client.lifecycle.restore(id=..., type=...)

{
    "id": "65f1c0a2b3d4e5f601234567",
    "type": "dataset"
}

Bir projeyi geri yüklemek, onunla birlikte çöpe atılan ve restoredModels olarak bildirilen modelleri de geri yükler.

Kalıcı Olarak Sil#

DELETE /api/trash

Python SDK: client.lifecycle.delete_trash(body=...)

Tek bir öğeyi sil:

{
    "id": "65f1c0a2b3d4e5f601234567",
    "type": "dataset"
}

Veya tüm çöp kutusunu boşalt:

{
    "all": true
}

Yanıt deletedCount değerini, ayrıca ilgili yerlerde cascadedModels ve survivingDeployments değerlerini bildirir.

Geri döndürülemez

Kalıcı silme işlemi geri alınamaz. Kaynak ve ilgili tüm veriler kaldırılır.


Yükleme API'si#

İmzalı URL'leri kullanarak dosyaları doğrudan bulut depolama alanına yükleyin. Bir model yüklemesini tamamlamak ağırlıklarını ekler; bir veri seti arşivi yüklemesini tamamlamak ise oturumu kaydeder ve bunu daha sonra veri seti yükleme işlemine iletirsiniz. Bkz. Veri belgeleri.

İmzalı Yükleme URL'sini Al#

POST /api/upload/signed-url

Python SDK: client.upload.signed_url(body=...)

Gövde:

{
    "assetType": "datasets",
    "assetId": "65f1c0a2b3d4e5f601234567",
    "filename": "warehouse.zip",
    "contentType": "application/zip",
    "totalBytes": 52428800
}
AlanTipGerekliAçıklama
assetTypedizeEvetdatasets, models, images veya videos
assetIddizeEvetHedef veri setinin veya modelin ID'si
filenamedizeEvetOrijinal dosya adı (maks 256 karakter)
contentTypedizeEvetMIME türü
totalBytessayıEvetBayt cinsinden dosya boyutu
Veri Seti Arşiv Dosya Adları

assetType, datasets olduğunda, filename .zip, .tar, .tar.gz, .tgz veya .ndjson ile bitmelidir. Yüklemeden önce serbest görüntüleri bir arşive paketleyin.

Yanıt:

{
    "sessionId": "session_abc123",
    "uploadUrl": "https://storage.googleapis.com/...&signature=...",
    "expiresAt": "2026-02-22T12:00:00Z"
}

Beyan ettiğiniz aynı Content-Type değerini kullanarak, uploadUrl adresine bir PUT isteği ile dosyayı yükleyin.

Yüklemeyi Tamamla#

POST /api/upload/complete

Python SDK: client.upload.complete(session_id=...)

{
    "sessionId": "session_abc123",
    "checksum": "<optional sha-256 hex>"
}

Yanıt: success ve size ile contentType içeren bir file nesnesi. Modeller için bu ağırlıkları ekler; veri seti arşivleri için ise işlemeye başlamak üzere hemen ardından ingest çağrısı yapın.


Depolama Entegrasyonları API'si#

Salt okunur Google Cloud Storage, Amazon S3 veya Azure Blob Storage hesaplarını bağlayın ve bunları veri seti kaynakları olarak inceleyin. Bkz. Entegrasyonlar belgeleri.

Entegrasyonları Listele#

GET /api/integrations/buckets

Python SDK: client.storage_integrations.list()

Her biri id, provider, credentialIdentity, targets ve createdAt içeren integrations döndürür. Kimlik bilgileri asla döndürülmez.

Konumları Keşfet#

POST /api/integrations/buckets/discover

Python SDK: client.storage_integrations.discover(body=...)

Sağlanan kimlik bilgileriyle okunabilen, bunları kaydetmeden kova veya kapları listeler.

{
    "provider": "gcs",
    "credentials": {
        "client_email": "svc@project.iam.gserviceaccount.com",
        "private_key": "-----BEGIN PRIVATE KEY-----\n...",
        "project_id": "my-project"
    }
}

Yanıt: {"targets": ["my-bucket", "another-bucket"]}

Depolama Alanını Bağla#

POST /api/integrations/buckets

Python SDK: client.storage_integrations.create(body=...)

Keşifle aynı kimlik bilgisi biçimleri, ayrıca 1-50 kova veya kap adı içeren zorunlu bir targets dizisi. Depolanan entegrasyonla birlikte 201 döndürür. Geçici S3 kimlik bilgileri (ASIA erişim anahtarları) reddedilir.

Nesnelere Göz At#

GET /api/integrations/buckets/{id}/objects

Python SDK: client.storage_integrations.objects(id, target=...)

Sorgu Parametreleri:

ParametreTipGerekliAçıklama
targetdizeEvetKova veya kap adı
prefixdizeHayırKlasör öneki (maks 1024 karakter)
cursordizeHayırÖnceki bir sayfadan sağlayıcı sayfalama imleci

entries (her kind bir folder veya file değeridir) ve sonraki sayfa için isteğe bağlı bir cursor döndürür.

Depolama Bağlantısını Kes#

DELETE /api/integrations/buckets/{id}

Python SDK: client.storage_integrations.delete(id)

Sağlayıcı verilerini silmeden kayıtlı kimlik bilgilerini kaldırır. Bağlı veri setleri görünür kalmaya devam eder, ancak aynı depolama hesabı yeniden bağlanana kadar dosyaları kullanılamaz durumda kalır. Çalışma alanı yönetici erişimi gerektirir.


Veri Seti İçe Aktarma API'si#

Üçüncü taraf servislerden veri setlerini içe aktarın. Bkz. Roboflow entegrasyonu.

Bir Roboflow İçeri Aktarımını Önizle#

POST /api/integrations/roboflow/preview

Python SDK: client.datasets.preview_roboflow(api_key=...)

Bir Roboflow API anahtarını bir içe aktarım planına çözer: çalışma alanı ayrıntıları, içe aktarılacak newDatasets, atlanan, desteklenmeyen ve çözümlenemeyen projelerin sayıları, bytesTotal ve storage alanınız. Roboflow API anahtarı gövdeden okunur ve kalıcı hale getirilmez.

{
    "apiKey": "ROBOFLOW_API_KEY"
}

Roboflow'dan İçe Aktar#

POST /api/integrations/roboflow/import

Python SDK: client.datasets.import_roboflow(api_key=..., items=...)

Önizleme tarafından döndürülen öğeleri kullanarak, seçilen en fazla 500 Roboflow proje sürümü için veri alma (ingest) işlerini kuyruğa alır.

{
    "apiKey": "ROBOFLOW_API_KEY",
    "items": [
        {
            "workspace": "my-workspace",
            "projectId": "warehouse-safety",
            "projectName": "Warehouse Safety",
            "projectType": "object-detection",
            "latestVersion": 4
        }
    ]
}

Yanıt (201): imported, failed ve skipped dizileri. İçe aktarımlar depolama alanı gerektirir ve her veri kümesi planınızın içe aktarım başına boyut sınırına uymalıdır.


Hesap API'si#

Platform hesabını, anahtarları, depolamayı ve genel profilleri incele. Ayarlar belgelerine göz at.

Hesap Özeti#

GET /api/account/summary

Python SDK: client.account.summary()

Anahtarı oluşturan çalışma alanı için planı, kredi bakyiyesini ve kaynak sayılarını döndürür.

{
    "username": "acme-vision",
    "name": "Acme Vision",
    "accountType": "team",
    "plan": "pro",
    "creditsCents": 2500,
    "counts": { "projects": 4, "datasets": 7, "models": 21 },
    "teams": []
}
Ekip Listesi

teams, tarayıcı oturumları için doldurulur. API anahtarı yanıtları boş bir liste döndürür, çünkü bir anahtar zaten tek bir çalışma alanına kapsamlanmıştır.

API Anahtarlarını Listele#

GET /api/api-keys

Python SDK: client.account.api_keys()

Anahtarın çalışma alanı için keys, keyId, name, keyPrefix ve createdAt ile birlikte döner. API anahtarıyla kimliği doğrulanan istekler yalnızca meta veri alır; tam anahtar değerleri, Platform arayüzündeki Ayarlar > API Anahtarları kısmında çalışma alanı sahibine gösterilir (anahtarların oluşturulduğu ve iptal edildiği yer de burasıdır).

Depolama Kullanımını Kontrol Et#

GET /api/storage

Python SDK: client.account.storage()

Sorgu Parametreleri:

ParametreTipAçıklama
detailsbooleanEn büyük on depolama tüketicisini dahil et (varsayılan: false)

Yanıt:

{
    "tier": "pro",
    "usage": {
        "storage": { "current": 1073741824, "limit": 107374182400, "percent": 1.0 },
        "datasets": { "current": 536870912, "limit": 107374182400, "percent": 0.5 }
    },
    "breakdown": {
        "byCategory": {
            "datasets": { "bytes": 536870912, "count": 2 },
            "models": { "bytes": 268435456, "count": 4 },
            "exports": { "bytes": 268435456, "count": 3 }
        },
        "topItems": [
            {
                "_id": "65f1c0a2b3d4e5f601234567",
                "name": "Warehouse",
                "slug": "warehouse",
                "sizeBytes": 536870912,
                "type": "dataset"
            }
        ]
    },
    "region": "us",
    "username": "acme-vision",
    "updatedAt": "2026-01-15T10:00:00Z"
}

Genel Kullanıcı Profili Al#

GET /api/users

Python SDK: client.account.profile(username=...)

Sorgu Parametreleri:

ParametreTipGerekliAçıklama
usernamedizeEvetAranacak kullanıcı adı

Genel user profilini followerCount ile ve kimliği doğrulanmış çağrıcılar için isFollowed ile birlikte döndürür.

Bir Kullanıcıyı Takip Et veya Takibi Bırak#

PATCH /api/users

Python SDK: client.account.follow(username=..., followed=...)

{
    "username": "target-user",
    "followed": true
}

Yanıt: followed ve güncellenen followerCount.


Faturalandırma API#

Plan kullanımını ve kredi defterini kontrol et. Faturalandırma belgelerine bak.

Para Birimi Birimleri

Faturalandırma tutarları ABD senti cinsinden tam sayılardır ve 100 = $1.00 şeklindedir.

Planı ve Kullanımı Görüntüle#

GET /api/billing/usage-summary

Python SDK: client.billing.usage_summary()

plan (kimlik, durum, faturalandırma döngüsü, dönem sonu), metrics (depolama sınırı ve kullanımı), trainingCredit, features, creditsCents ve koltuk sayılarını döndürür.

İşlemleri Görüntüle#

GET /api/billing/transactions

Python SDK: client.billing.transactions()

Sorgu Parametreleri:

ParametreTipAçıklama
fromdizeEn erken işlem zaman damgası (ISO 8601)
todizeEn son işlem zaman damgası (ISO 8601)

Her işlem şunları içerir: id, type (örneğin purchase, training, monthly_grant veya refund), amountCents, balanceAfter, createdAt, isteğe bağlı bir receiptUrl ve eğitim ücretleri için model bağlamı. Dahili faturalandırma ayrıntıları asla döndürülmez.


Keşfet (Explore) API'si#

Topluluk tarafından paylaşılan genel projeleri ve veri kümelerini ara. Keşfet belgelerine göz at.

Herkese Açık İçeriği Ara#

GET /api/explore/search

Python SDK: client.explore.search()

Sorgu Parametreleri:

ParametreTipAçıklama
qdizeArama terimi (maks. 200 karakter)
typedizeall (varsayılan), projects veya datasets
sortdizenewest (varsayılan), oldest, stars, name-asc, name-desc, count-desc, count-asc
offsettamsayıAtlanacak sonuçlar (varsayılan: 0)
limittamsayıKaynak türü başına maksimum sonuç (varsayılan: 20, maks: 100)
taskdizeVirgülle ayrılmış görev filtreleri: detect, segment, semantic, depth, classify, pose, obb
authordizeSahip kullanıcı adı filtresi
starredbooleanYalnızca kimliği doğrulanmış çağrıcı tarafından yıldızlanan içeriği döndür; API anahtarı gerektirir

Yanıt: projects, datasets ve hasMore.

curl "https://platform.ultralytics.com/api/explore/search?type=datasets&task=detect&sort=stars&limit=20"

Python SDK#

ultralytics-platform, OpenAPI sözleşmesinden oluşturulmuş, uç nokta başına bir yönteme (client.datasets.list, client.models.predict, client.exports.create, ...) sahip türü belirlenmiş bir Python istemcisidir. Her yöntem yol parametrelerini konumsal olarak, diğer girdileri anahtar kelime argümanları olarak ve isteğe bağlı istek başına timeout ile extra_headers değerlerini kabul eder.

pip install "ultralytics-platform>=0.1.5" # Python 3.11+
from ultralytics_platform import Platform

with Platform() as client:  # reads ULTRALYTICS_API_KEY
    dataset = client.datasets.retrieve("acme-vision", "warehouse")
    images = client.datasets.images("acme-vision", "warehouse", limit=10)
    export = client.exports.create("acme-vision", "inspection", "v3", format="onnx")

AsyncPlatform, async/await kodu için aynı kaynak ağacını sunar; başarısız yanıtlar APIError değerini status_code, body ve ayrıştırılmış json ile birlikte tetikler; bağlantı hataları ise APIConnectionError hatasına neden olur. Eksiksiz README için SDK deposuna göz at.

Python Entegrasyonu#

Eğitim ve çıkarım iş akışları için kimlik doğrulamayı, yüklemeleri ve gerçek zamanlı metrik akışını otomatik olarak yöneten Ultralytics Python paketini kullan.

Kurulum & Ayarlar#

pip install "ultralytics>=8.4.120"

Kurulumu doğrula:

yolo check

Kimlik Doğrulama#

yolo login YOUR_API_KEY

Platform Veri Kümelerini Kullanma#

Veri setlerine ul:// URI'leriyle başvuru yap:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Train on your Platform dataset
model.train(
    data="ul://your-username/datasets/your-dataset",
    epochs=100,
    imgsz=640,
)

URI Formatı:

DesenAçıklama
ul://username/datasets/slugVeri Seti
ul://username/project-nameProje
ul://username/project/model-nameBelirli model
ul://ultralytics/yolo26/yolo26nResmi model

Platforma Gönderme#

Sonuçları bir Platform projesine gönder:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Results automatically sync to Platform
model.train(
    data="coco8.yaml",
    epochs=100,
    project="your-username/my-project",
    name="experiment-1",
)

Senkronize edilenler:

  • Eğitim metrikleri (gerçek zamanlı)
  • Nihai model ağırlıkları
  • Doğrulama grafikleri
  • Konsol çıktısı
  • Sistem metrikleri

API Örnekleri#

Platformdan bir model yükle:

# Your own model
model = YOLO("ul://username/project/model-name")

# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")

Çıkarım çalıştır:

results = model("image.jpg")

# Access results
for r in results:
    boxes = r.boxes  # Detection boxes
    masks = r.masks  # Segmentation masks
    keypoints = r.keypoints  # Pose keypoints
    probs = r.probs  # Classification probabilities

Modeli dışa aktar:

# Export to ONNX
model.export(format="onnx", imgsz=640, quantize=16)

# Export to TensorRT
model.export(format="engine", imgsz=640, quantize=16)

# Export to CoreML
model.export(format="coreml", imgsz=640)  # use imgsz=224 for classification

Doğrulama:

metrics = model.val(data="ul://username/datasets/my-dataset")

print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")

SSS#

  • Platform URL'sinde görünen aynı sahip ve ad segmentlerini kullan. https://platform.ultralytics.com/acme-vision/inspection/v3 adresindeki bir model GET /api/models/acme-vision/inspection/v3'dir. Veritabanı kimlikleri hala yanıtlarda döndürülür (id olarak) ve birkaç rota bunları doğrudan alır; görüntü rotaları bir imageId alır, yüklemeler bir assetId alır ve POST /api/training/start bir modelId alır.

  • Koleksiyona bağlıdır. Çoğu liste uç noktası limit kabul eder:

    curl -H "Authorization: Bearer YOUR_API_KEY" \
      "https://platform.ultralytics.com/api/datasets/acme-vision?limit=50"

    Veri kümesi görüntüleri, kümeleme ve Keşfet araması, offset ile limit kullanır ve hasMore bildirir:

    curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&limit=20&sort=stars"

    Çok büyük görüntü setleri arasında en iyi şekilde nextCursor olarak döndürülen imleçle gezinilir:

    curl -H "Authorization: Bearer YOUR_API_KEY" \
      "https://platform.ultralytics.com/api/datasets/acme-vision/warehouse/images?limit=1000&includeTotal=false&cursor=LAST_IMAGE_ID"

    Çöp kutusu page kullanır ve dağıtım logları, nextPageToken olarak döndürülen opak pageToken değerini kullanır.

  • Evet. Bu sayfadaki her işlem düz bir HTTPS isteğidir ve eksiksiz sözleşme, herhangi bir dilde bir istemci oluşturucuya besleyebileceğin platform.ultralytics.com/openapi.json adresinde OpenAPI 3.2 olarak yayınlanır. ultralytics-platform paketi tam olarak budur: sözleşmeden oluşturulmuş türü belirlenmiş bir istemci; ultralytics paketi ise eğitim ve çıkarımın yanı sıra gerçek zamanlı metrik akışı ve otomatik model yüklemeleri ekler. Faturalandırma ödemesi ve ekip yönetimi gibi yalnızca tarayıcı oturumuna ait hesap akışları Platform UI içinde kalır.

  • Doğru süre boyunca beklemek için 429 yanıtındaki Retry-After başlığını kullan:

    import time
    
    import requests
    
    def api_request_with_retry(url, headers, max_retries=3):
        for attempt in range(max_retries):
            response = requests.get(url, headers=headers)
            if response.status_code != 429:
                return response
            wait = int(response.headers.get("Retry-After", 2**attempt))
            time.sleep(wait)
        raise RuntimeError("Rate limit exceeded")
  • 404, kaynağın mevcut olmadığını veya anahtarınız tarafından hiç görünmediğini ifade eder. 403, kaynağın bulunduğunu ancak eylemin anahtarınızın sahip olduğundan daha fazla erişim gerektirdiğini belirtir — bir veri kümesini değiştirmek için düzenleyici erişimi, bir dağıtımı silmek için sahip erişimi, depolama bağlantısını kesmek için yönetici erişimi ya da dışarı aktarımlar ve dağıtımlar için daha yüksek bir plan veya kota.

  • Genel veri kümelerini, projeleri ve modelleri okumak (görüntüleri, imzalı görüntü URL'leri, sınıf istatistikleri, gömme durumu, kümeleme düzeni ve dışarı aktarma listesi dahil); genel bir modeldeki eğitim ilerlemesini kontrol etmek; genel bir modelin dosyalarını indirmek; genel bir model üzerinde çıkarım çalıştırmak; genel bir kullanıcı profilini aratmak; tek bir genel modelle filtrelenmiş dağıtımları listelemek ve Keşfet'te arama yapmak. GET /api/training/gpu-availability, yönetilmiş kapasite talep etmediğiniz sürece tamamen aşıktır (geneldir). Geri kalan her şey bir anahtar gerektirir ve genel bir uç noktada anahtar sağlamak özel kaynaklarınızı da açığa çıkarır.

Yorumlar