YOLOv8 is an object detection, instance segmentation, and keypoint detection model family from Ultralytics. Roboflow serves COCO-pretrained YOLOv8 checkpoints under short aliases, and you can upload your own weights to run a model you trained elsewhere.
Training YOLOv8 is not supported on Roboflow. For a Roboflow-trained detector, see RF-DETR, YOLO26, or YOLO11.
YOLOv8 pretrained aliases
Pass one of these IDs as model_id to run a COCO-pretrained checkpoint without training anything. The full list lives on the Pretrained Model Aliases page.
| Model | Input size | Task | Model ID | Test |
|---|---|---|---|---|
| YOLOv8n | 640 | Object Detection | yolov8n-640 | Test in browser |
| YOLOv8n | 1280 | Object Detection | yolov8n-1280 | Test in browser |
| YOLOv8s | 640 | Object Detection | yolov8s-640 | Test in browser |
| YOLOv8s | 1280 | Object Detection | yolov8s-1280 | Test in browser |
| YOLOv8m | 640 | Object Detection | yolov8m-640 | Test in browser |
| YOLOv8m | 1280 | Object Detection | yolov8m-1280 | Test in browser |
| YOLOv8l | 640 | Object Detection | yolov8l-640 | Test in browser |
| YOLOv8l | 1280 | Object Detection | yolov8l-1280 | Test in browser |
| YOLOv8x | 640 | Object Detection | yolov8x-640 | Test in browser |
| YOLOv8x | 1280 | Object Detection | yolov8x-1280 | Test in browser |
| YOLOv8n Instance Segmentation | 640 | Instance Segmentation | yolov8n-seg-640 | Test in browser |
| YOLOv8n Instance Segmentation | 1280 | Instance Segmentation | yolov8n-seg-1280 | Test in browser |
| YOLOv8s Instance Segmentation | 640 | Instance Segmentation | yolov8s-seg-640 | Test in browser |
| YOLOv8m Instance Segmentation | 1280 | Instance Segmentation | yolov8s-seg-1280 | Test in browser |
| YOLOv8m Instance Segmentation | 640 | Instance Segmentation | yolov8m-seg-640 | Test in browser |
| YOLOv8m Instance Segmentation | 1280 | Instance Segmentation | yolov8m-seg-1280 | Test in browser |
| YOLOv8l Instance Segmentation | 640 | Instance Segmentation | yolov8l-seg-640 | Test in browser |
| YOLOv8l Instance Segmentation | 1280 | Instance Segmentation | yolov8l-seg-1280 | Test in browser |
| YOLOv8x Instance Segmentation | 640 | Instance Segmentation | yolov8x-seg-640 | Test in browser |
| YOLOv8x Instance Segmentation | 1280 | Instance Segmentation | yolov8x-seg-1280 | Test in browser |
| YOLOv8x Keypoint Detection | 1280 | Keypoint Detection | yolov8x-pose-1280 | Test in browser |
| YOLOv8x Keypoint Detection | 640 | Keypoint Detection | yolov8x-pose-640 | Test in browser |
| YOLOv8l Keypoint Detection | 640 | Keypoint Detection | yolov8l-pose-640 | Test in browser |
| YOLOv8m Keypoint Detection | 640 | Keypoint Detection | yolov8m-pose-640 | Test in browser |
| YOLOv8s Keypoint Detection | 640 | Keypoint Detection | yolov8s-pose-640 | Test in browser |
| YOLOv8n Keypoint Detection | 640 | Keypoint Detection | yolov8n-pose-640 | Test in browser |
YOLOv8 API
Get your API Key
Create a Roboflow account, find your key on the Roboflow API settings page and make it available to your shell:
export ROBOFLOW_API_KEY="your-key-here"Install the dependencies
Install the Inference SDK and supervision for decoding and drawing predictions:
pip install -U inference-sdk supervision opencv-pythonRun the model
This example runs the pretrained yolov8n-640 checkpoint. To serve your own weights, swap in your {workspace}/{model-slug} ID (see Versions, Trainings, and Models).
import os
import cv2
import supervision as sv
from inference_sdk import InferenceHTTPClient
image = sv.load_image_from_url("https://media.roboflow.com/inference/people-walking.jpg")
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key=os.environ["ROBOFLOW_API_KEY"],
)
results = client.infer(image, model_id="yolov8n-640")
detections = sv.Detections.from_inference(results)
labels = [
f"{name} {conf:.2f}"
for name, conf in zip(detections.data["class_name"], detections.confidence)
]
annotated = sv.BoxAnnotator().annotate(image.copy(), detections)
annotated = sv.LabelAnnotator().annotate(annotated, detections, labels=labels)
cv2.imwrite("annotated.png", annotated)Set api_url to match your deployment target:
https://serverless.roboflow.comfor the Serverless Cloud API.http://localhost:9001for a local Inference server.- Your Dedicated Deployment URL for a private endpoint.
You can also load the checkpoint in-process with the inference package:
from inference import get_model
model = get_model(model_id="yolov8n-640")
results = model.infer("https://media.roboflow.com/inference/people-walking.jpg")