Fully featured low overhead profiler for Java EE and Java SE platforms.
Easy-to-use performance and memory .NET profiler for Windows, Linux and macOS.
Secure and easy profiling in cloud, containers and clustered environments.
Performance monitoring and profiling of Jenkins, Bamboo, TeamCity, Gradle, Maven, Ant and JUnit.

Profiler HTTP API

YourKit profiler agent exposes language neutral HTTP API which allows to control profiling mode, capture snapshots and get JVM telemetry. The HTTP API is a RESTful in terms that agent's responses do not depend on previous request history.

API is based on HTTP requests and JSON responses. All endpoints use POST methods and receive JSON object as a parameter in a request body. The response is always JSON object and has application/json as a Content-Type.

This API uses standard HTTP response codes to indicate whether a method completed successfully. A 200 response indicates success. A 400 type response indicates a failure, and a 500 type response indicates an internal system error.

You can use any tool of your choice to send HTTP requests, but in the examples below we will use cURL tool. We suppose that profiled application is running on host and profiler agent listens port.

Profiler agent always opens encrypted SSL socket. If you do not provide the SSL certificate, the agent creates a self-signed SSL certificate on the fly. To skip certificate validation, please add -k or --insecure to cURL options.

Requests

POST advanceGeneration

Advances object generation number.

Endpoint

https://host:port/yjp/api/v2/advanceGeneration

Parameters

description - Optional description associated with the generation.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/advanceGeneration \
-d '{"description" : "Hello, world"}'

POST captureHprofSnapshot

Captures snapshot with heap data in HPROF format.

Endpoint

https://host:port/yjp/api/v2/captureHprofSnapshot

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/captureHprofSnapshot

Response example

{
  "path" : "/home/foobar/Snapshots/DemoApp-2021-11-16.hprof"
}

path - Absolute file path of the captured snapshot file. If a remote application is being profiled, then the path is in the file system of the remote host.

POST captureMemorySnapshot

Captures snapshot with heap data in YourKit format.

Endpoint

https://host:port/yjp/api/v2/captureMemorySnapshot

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/captureMemorySnapshot

Response example

{
  "path" : "/home/foobar/Snapshots/DemoApp-2021-11-16.snapshot"
}

path - Absolute file path of the captured snapshot file. If a remote application is being profiled, then the path is in the file system of the remote host.

POST capturePerformanceSnapshot

Captures performance snapshot without heap data.

Endpoint

https://host:port/yjp/api/v2/capturePerformanceSnapshot

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/capturePerformanceSnapshot

Response example

{
  "path" : "/home/foobar/Snapshots/DemoApp-2021-11-16.snapshot"
}

path - Absolute file path of the captured snapshot file. If a remote application is being profiled, then the path is in the file system of the remote host.

POST resetAllocationProfiling

Clears recorded allocations. When allocation profiling starts, collected allocation data is cleared automatically, so you do not have to explicitly call this method in that case.

Endpoint

https://host:port/yjp/api/v2/resetAllocationProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/resetAllocationProfiling

POST resetCpuProfiling

Clears current results of CPU profiling in any mode, be it sampling, tracing or call counting. When CPU profiling starts, collected CPU profiling data is cleared automatically, so you do not have to explicitly call this method in that case.

Endpoint

https://host:port/yjp/api/v2/resetCpuProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/resetCpuProfiling

POST resetTelemetry

Clears all charts.

Endpoint

https://host:port/yjp/api/v2/resetTelemetry

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/resetTelemetry

POST resetThreadProfiling

Clears the collected thread profiling data and continues the thread profiling if it is active.

Endpoint

https://host:port/yjp/api/v2/resetThreadProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/resetThreadProfiling

POST clearEventTables

Clears event table(s) by name. If the specified tables have dependent tables, they will be cleared too.

Endpoint

https://host:port/yjp/api/v2/clearEventTables

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/clearEventTables \
-d '{"tables" : ["File", "Thread"]}'

POST resetExceptionProfiling

Clears recorded exceptions. When exception profiling starts, recorded exceptions are cleared automatically, so you do not have to explicitly call this method in that case.

Endpoint

https://host:port/yjp/api/v2/resetExceptionProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/resetExceptionProfiling

POST resetMonitorProfiling

Clears monitor profiling data. When monitor profiling starts, collected monitor profiling data is cleared automatically, so you do not have to explicitly call this method in that case.

Endpoint

https://host:port/yjp/api/v2/resetMonitorProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/resetMonitorProfiling

POST forceGc

Forces garbage collection in the profiled application.

Endpoint

https://host:port/yjp/api/v2/forceGc

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/forceGc

POST getJvmTelemetry

Returns current JVM telemetry.

Endpoint

https://host:port/yjp/api/v2/getJvmTelemetry

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/getJvmTelemetry

Response example

{
  "totalHeapSize" : 31172040
}

totalHeapSize - Size of JVM heap in bytes.

POST getProbeActivityModes

The mapping of probe class names to the probe activity mode. Mode might be on, off or auto.

Endpoint

https://host:port/yjp/api/v2/getProbeActivityModes

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/getProbeActivityModes

Response example

{
  "com.yourkit.probes.builtin.Sockets" : "auto",
  "com.yourkit.probes.builtin.Sync" : "off",
  "com.yourkit.probes.builtin.Threads" : "on"
}

POST getStatus

Returns the status of the profiler agent. The status describes currently running profiling modes.

Endpoint

https://host:port/yjp/api/v2/getStatus

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/getStatus

Response example

{
  "allocationProfiling" : true,
  "allocationProfilingSettings" : {
    "mode" : "exactStacks",
    "recordEach" : 10,
    "sizeLimit" : 4096,
    "heapSamplingInterval" : 0
  },
  "asyncSamplingCpu" : false,
  "asyncSamplingPeriodic" : false,
  "callCounting" : false,
  "cpuProfiling" : false,
  "exceptionProfiling" : true,
  "monitorProfiling" : false,
  "pid" : 37568,
  "sampling" : false,
  "appName" : "DemoApp",
  "telemetry" : true,
  "threadProfiling" : true,
  "tracing" : false,
  "agentVersion" : "YourKit Java Profiler 2024.9-b1"
}

POST getTotalCreatedObjects

Statistics of object allocation profiling.

Endpoint

https://host:port/yjp/api/v2/getTotalCreatedObjects

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/getTotalCreatedObjects

Response example

{
  "count" : 25694429,
  "size" : 1481721664
}

count - Number of created objects.

size - Size in bytes.

POST getTriggers

Obtains current trigger description. If there are no triggers, an empty string will be returned.

Endpoint

https://host:port/yjp/api/v2/getTriggers

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/getTriggers

Response example

{
  "triggers" : ""
}

triggers - The trigger description.

POST setProbeActivityModes

Changes probe activity modes of the specified probes.

Endpoint

https://host:port/yjp/api/v2/setProbeActivityModes

Parameters

Mapping of probe class names to probe activity mode. It specifies the probes whose mode should be changed. If a probe is not present in the mapping, its mode will remain unchanged. Mode might be on, off or auto.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/setProbeActivityModes \
-d '{
  "com.yourkit.probes.builtin.Sockets" : "off",
  "com.yourkit.probes.builtin.Threads" : "on"
}'

POST setTriggers

Sets triggers.

Endpoint

https://host:port/yjp/api/v2/setTriggers

Parameters

triggers - Description of trigger(s).

append - If true, the triggers will be added to the currently existing triggers. If false will be replaced.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/setTriggers \
-d '{
  "triggers" : "TimerListener delay=1h maxTriggerCount=-1\n  PrintMessage message=Hello output=stdout\n",
  "append":false
}'

POST startAllocationProfiling

Starts object allocation profiling. The method clears previously recorded allocation data.

Endpoint

https://host:port/yjp/api/v2/startAllocationProfiling

Parameters

mode - Allocation profiling mode. One of counting | exactStacks | sampledStacks | heapSampling

sizeLimit - Applicable in the modes exactStacks and sampledStacks. Record all objects with at least the specified size in bytes. If the parameter is missing, the default size 4096 (4 KB) is applied.

recordEach - Applicable in the modes exactStacks and sampledStacks. Record every N-th object smaller than the sizeLimit. If the parameter is missing, default value 10 is applied.

heapSamplingInterval - Applicable in the mode heapSampling. Specify the heap sampling interval in bytes. If the parameter is missing, the default value 131072 (128 KB) is applied.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startAllocationProfiling \
-d '{ "mode" : "counting"}'

POST startAsyncSamplingCpu

Starts asynchronous CPU sampling.

Asynchronous sampling is a low overhead profiling mode that does not suffer from a Safepoint bias problem. It features HotSpot-specific APIs to collect stack traces. It works with OpenJDK, Oracle JDK and other Java runtimes based on the HotSpot JVM.

Endpoint

https://host:port/yjp/api/v2/startAsyncSamplingCpu

Parameters

settings - CPU sampling settings. Absent parameter means the use of profiled application's settings.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startAsyncSamplingCpu

POST startAsyncSamplingPeriodic

Starts asynchronous periodic sampling.

Asynchronous sampling is a low overhead profiling mode that does not suffer from a Safepoint bias problem. It features HotSpot-specific APIs to collect stack traces. It works with OpenJDK, Oracle JDK and other Java runtimes based on the HotSpot JVM.

Endpoint

https://host:port/yjp/api/v2/startAsyncSamplingPeriodic

Parameters

settings - CPU sampling settings. Absent parameter means the use of profiled application's settings.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startAsyncSamplingPeriodic

POST startCallCounting

Starts CPU call counting. Unlike other CPU profiling modes only method invocations are counted, neither call stacks nor times are gathered.

Endpoint

https://host:port/yjp/api/v2/startCallCounting

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startCallCounting

POST startExceptionProfiling

Starts exception profiling. If exception profiling is not running when this method is called, previous exception profiling data is cleared. If exception profiling is already running, this method has no effect.

Endpoint

https://host:port/yjp/api/v2/startExceptionProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startExceptionProfiling

POST startMonitorProfiling

Starts monitor profiling. If monitor profiling is not running when this method is called, previous monitor profiling data is cleared. If monitor profiling is already running, this method has no effect.

Endpoint

https://host:port/yjp/api/v2/startMonitorProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startMonitorProfiling

POST startSampling

Starts CPU sampling. When sampling is used, the profiler periodically queries stacks and times of running threads to estimate the slowest parts of the code. In this mode method invocation counts are not available.

Endpoint

https://host:port/yjp/api/v2/startSampling

Parameters

settings - CPU sampling settings. Absent parameter means the use of profiled application's settings.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startSampling

POST startTelemetry

Starts telemetry collection. If a telemetry collection is already in progress, the method has no effect.

Endpoint

https://host:port/yjp/api/v2/startTelemetry

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startTelemetry

POST startThreadProfiling

Starts thread profiling. If thread profiling is already in progress, the method has no effect.

Endpoint

https://host:port/yjp/api/v2/startThreadProfiling

Parameters

mode - Thread profiling mode. One of full | states.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startThreadProfiling \
-d '{ "mode" : "full"}'

POST startTracing

Starts CPU tracing. When tracing is used, the profiler instruments the bytecode of the profiled application for recording time spent inside each profiled method. Both times and invocation counts are available.

Endpoint

https://host:port/yjp/api/v2/startTracing

Parameters

settings - CPU tracing settings. Absent parameter means the use of profiled application's settings.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/startTracing

POST stopAllocationProfiling

Stops allocation profiling. If allocation profiling is not running, this method has no effect.

Endpoint

https://host:port/yjp/api/v2/stopAllocationProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/stopAllocationProfiling

POST stopCpuProfiling

Stops CPU profiling in any mode, be it sampling, tracing or call counting. If CPU profiling is not running, this method has no effect.

Endpoint

https://host:port/yjp/api/v2/stopCpuProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/stopCpuProfiling

POST stopExceptionProfiling

Stops exception profiling. If exception profiling is not running, this method has no effect.

Endpoint

https://host:port/yjp/api/v2/stopExceptionProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/stopExceptionProfiling

POST stopMonitorProfiling

Stops monitor profiling. If monitor profiling is not running, this method has no effect.

Endpoint

https://host:port/yjp/api/v2/stopMonitorProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/stopMonitorProfiling

POST stopTelemetry

Stops telemetry collection. If a telemetry collection is already stopped, the method has no effect.

Endpoint

https://host:port/yjp/api/v2/stopTelemetry

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/stopTelemetry

POST stopThreadProfiling

Stops thread profiling. If thread profiling is off, the method has no effect.

Endpoint

https://host:port/yjp/api/v2/stopThreadProfiling

Parameters

No.

cURL example

curl -k -X POST https://host:port/yjp/api/v2/stopThreadProfiling

YourKit uses cookies and other tracking technologies to improve your browsing experience on our website, to show you personalized content, to analyze our website traffic, and to understand where our visitors are coming from.

By browsing our website, you consent to our use of cookies and other tracking technologies in accordance with the Privacy Policy.