Skip to content

VSOnline API

by visualstudio.com

Bearer tokenHTTPSDevelopment
Open documentation ↗

Overview

Public APIs for managing VS Codespaces

VSOnline is a development API from visualstudio.com. Requests are authenticated with a bearer token. It is served over HTTPS. Its OpenAPI description documents 152 endpoints.

At a glance

Authentication
Bearer token
HTTPS
Yes
CORS
Unknown
Category
Development
Base URL
https://online.visualstudio.com
Version
v1
Endpoints
152
Spec updated
2023-03-06

Make a first request

Replace the placeholders; the documentation says exactly where credentials go.

cURL
curl -X GET "https://online.visualstudio.com/api/v1/Environments" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN"
JavaScript
const response = await fetch("https://online.visualstudio.com/api/v1/Environments", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
  },
});
const data = await response.json();
console.log(data);
Python
import requests

response = requests.request(
    "GET",
    "https://online.visualstudio.com/api/v1/Environments",
    headers={
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
    },
    timeout=30,
)
print(response.json())

Endpoints

MethodPathWhat it does
POST/api/v1/AgentTelemetry—
POST/api/v1/AgentTelemetry/standalone—
GET/api/v1/Agents/{family}—
GET/api/v1/Environments—
POST/api/v1/Environments—
GET/api/v1/Environments/{environmentId}GetEnvironmentRoute
PATCH/api/v1/Environments/{environmentId}—
DELETE/api/v1/Environments/{environmentId}—
POST/api/v1/Environments/{environmentId}/_callbackUpdateEnvironmentRoute
GET/api/v1/Environments/{environmentId}/archive—
POST/api/v1/Environments/{environmentId}/archive—
POST/api/v1/Environments/{environmentId}/export—
PATCH/api/v1/Environments/{environmentId}/folder—
GET/api/v1/Environments/{environmentId}/heartbeattoken—
POST/api/v1/Environments/{environmentId}/notify—
PUT/api/v1/Environments/{environmentId}/ports/{port}—
DELETE/api/v1/Environments/{environmentId}/ports/{port}—
PATCH/api/v1/Environments/{environmentId}/restore—
PUT/api/v1/Environments/{environmentId}/secrets—
POST/api/v1/Environments/{environmentId}/shutdown—
POST/api/v1/Environments/{environmentId}/start—
GET/api/v1/Environments/{environmentId}/state—
GET/api/v1/Environments/{environmentId}/updates—
POST/api/v1/GenevaActions/Billing/resend—
GET/api/v1/GenevaActions/Billing/{environmentId}—
GET/api/v1/GenevaActions/Billing/{environmentId}/state-changes—
POST/api/v1/GenevaActions/Billing/{environmentId}/state-changes—
POST/api/v1/GenevaActions/Configuration/{target}—
GET/api/v1/GenevaActions/Configuration/{target}/{key}—
DELETE/api/v1/GenevaActions/Configuration/{target}/{key}—
GET/api/v1/GenevaActions/Environments/{environmentId}—
DELETE/api/v1/GenevaActions/Environments/{environmentId}—
PUT/api/v1/GenevaActions/Environments/{environmentId}/archive—
GET/api/v1/GenevaActions/Environments/{environmentId}/archived_storage_sas/{targetBlob}—
PUT/api/v1/GenevaActions/Environments/{environmentId}/shutdown—
POST/api/v1/GenevaActions/Environments/{environmentId}/upload/running/vm/logs—
POST/api/v1/GenevaActions/Pools/change-resource-deletion-setting—
POST/api/v1/GenevaActions/Pools/{poolCode}/rotate-pool—
POST/api/v1/GenevaActions/Pools/{target}—
POST/api/v1/GenevaActions/Prebuilds/pools/createorupdatesettings—
POST/api/v1/GenevaActions/Prebuilds/pools/delete—
POST/api/v1/GenevaActions/Privacy/refresh-profile-telemetry-properties—
POST/api/v1/GenevaActions/Resources/{resourceId}/under-investigation—
POST/api/v1/GenevaActions/VnetPoolDefinitions—
DELETE/api/v1/GenevaActions/VnetPoolDefinitions—
POST/api/v1/HeartBeat—
GET/api/v1/Locations—
GET/api/v1/Locations/{location}—
POST/api/v1/Prebuilds/pools/{poolId}/instances—
PUT/api/v1/Prebuilds/pools/{poolId}/instances—
GET/api/v1/Prebuilds/template/{environmentId}GetTemplateInfoRoute
GET/api/v1/Prebuilds/templates/repo/{repoId}/branch/{branchName}/hash/{prebuildHash}/location/{location}/skusGetPrebuildReadinessRoute
GET/api/v1/Sas—
GET/api/v1/Secrets—
POST/api/v1/Secrets—
PUT/api/v1/Secrets/{secretId}—
DELETE/api/v1/Secrets/{secretId}—
GET/api/v1/Tenant/{tenantId}—
PUT/api/v1/Tenant/{tenantId}—
DELETE/api/v1/Tenant/{tenantId}—
POST/api/v1/Tokens/plans/{planName}/deleteAllCodespaces—
POST/api/v1/Tokens/plans/{planName}/readAllCodespaces—
POST/api/v1/Tokens/plans/{planName}/writeCodespaces—
POST/api/v1/Tokens/plans/{planName}/writeDelegates—
PUT/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}—
POST/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}/deleteAllCodespaces—
POST/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}/deleteAllEnvironments—
POST/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}/readAllCodespaces—
POST/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}/readAllEnvironments—
POST/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}/writeCodespaces—
POST/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}/writeDelegates—
POST/api/v1/Tokens/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/{providerNamespace}/plans/{resourceName}/writeEnvironments—
GET/api/v1/Tunnel/{environmentId}/portInfo—
POST/api/v1/UserSubscriptions—
DELETE/api/v1/UserSubscriptions—
GET/api/v1/pools/default—
PUT/api/v1/subscriptions/{subscriptionId}/providers/GitHub.Network/{resourceType}/SubscriptionLifeCycleNotification—
POST/api/v1/subscriptions/{subscriptionId}/providers/GitHub.Network/{resourceType}/resourceReadBegin—
PUT/api/v1/subscriptions/{subscriptionId}/providers/Microsoft.Codespaces/plans/SubscriptionLifeCycleNotification—
POST/api/v1/subscriptions/{subscriptionId}/providers/Microsoft.Codespaces/plans/resourceReadBegin—
PUT/api/v1/subscriptions/{subscriptionId}/providers/Microsoft.VSOnline/plans/SubscriptionLifeCycleNotification—
POST/api/v1/subscriptions/{subscriptionId}/providers/Microsoft.VSOnline/plans/resourceReadBegin—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/resourceReadBegin—
PUT/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}—
PATCH/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}—
DELETE/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}/resourceCreationCompleted—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}/resourceCreationValidate—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}/resourceDeletionCompleted—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}/resourceDeletionValidate—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}/resourcePatchCompleted—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}/resourcePatchValidate—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/GitHub.Network/{resourceType}/{resourceName}/resourceReadBegin—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Codespaces/plans/resourceReadBegin—
PUT/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Codespaces/plans/{resourceName}—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Codespaces/plans/{resourceName}/deleteAllCodespaces—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Codespaces/plans/{resourceName}/deleteAllEnvironments—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Codespaces/plans/{resourceName}/readAllCodespaces—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Codespaces/plans/{resourceName}/readAllEnvironments—
POST/api/v1/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Codespaces/plans/{resourceName}/readDelegates—

Showing the first 100 of 152 endpoints; the full list is in the documentation.

Questions

Does the VSOnline API need an API key?

Yes. The VSOnline API uses Bearer token authentication; the documentation explains how to get credentials.

Does the VSOnline API support HTTPS?

Yes, the VSOnline API is served over HTTPS.

How many endpoints does the VSOnline API have?

Its OpenAPI description lists 152 endpoints in version v1. The first 100 are shown on this page.

What are alternatives to the VSOnline API?

Other Development APIs include Cloudflare, Azure DevOps, IPify, App Store Connect API, StackExchange.

Compare alternatives →

Listed from APIs.guru (CC0).