# Usage

> Source: https://trigger.dev/docs/run-usage

[​](https://trigger.dev/docs/run-usage#getting-the-run-cost-and-duration)

Getting the run cost and duration
--------------------------------------------------------------------------------------------------------------

You can get the cost and duration of the current including retries of the same run.

    import { task, usage, wait } from "@trigger.dev/sdk";
    
    export const heavyTask = task({
      id: "heavy-task",
      machine: {
        preset: "medium-2x",
      },
      run: async (payload, { ctx }) => {
        // Do some compute
        const result = await convertVideo(payload.videoUrl);
    
        // Get the current cost and duration up until this line of code
        // This includes the compute time of the previous lines
        let currentUsage = usage.getCurrent();
        /* currentUsage = {
            compute: {
              attempt: {
                costInCents: 0.01700,
                durationMs: 1000,
              },
              total: {
                costInCents: 0.0255,
                durationMs: 1500,
              },
            },
            baseCostInCents: 0.0025,
            totalCostInCents: 0.028,
          } 
          */
    
        // In the cloud product we do not count waits towards the compute cost or duration.
        // We also don't include time between attempts or before the run starts executing your code.
        // So this line does not affect the cost or duration.
        await wait.for({ seconds: 5 });
    
        // This will give the same result as before the wait.
        currentUsage = usage.getCurrent();
    
        // Do more compute
        const result = await convertVideo(payload.videoUrl);
    
        // This would give a different value
        currentUsage = usage.getCurrent();
      },
    });
    

In Trigger.dev cloud we do not include time between attempts, before your code executes, or waits towards the compute cost or duration.

[​](https://trigger.dev/docs/run-usage#getting-the-run-cost-and-duration-from-your-backend)

Getting the run cost and duration from your backend
--------------------------------------------------------------------------------------------------------------------------------------------------

You can use [runs.retrieve()](https://trigger.dev/docs/management/runs/retrieve)
 to get a single run or [runs.list()](https://trigger.dev/docs/management/runs/list)
 to get a list of runs. The response will include `costInCents` `baseCostInCents` and `durationMs` fields.

single run

    import { runs } from "@trigger.dev/sdk";
    
    const run = await runs.retrieve("run-id");
    console.log(run.costInCents, run.baseCostInCents, run.durationMs);
    const totalCost = run.costInCents + run.baseCostInCents;
    

multiple runs

    import { runs } from "@trigger.dev/sdk";
    
    let totalCost = 0;
    for await (const run of runs.list({ tag: "user_123456" })) {
      totalCost += run.costInCents + run.baseCostInCents;
      console.log(run.costInCents, run.baseCostInCents, run.durationMs);
    }
    
    console.log("Total cost", totalCost);
    

[​](https://trigger.dev/docs/run-usage#getting-the-cost-and-duration-of-a-block-of-code)

Getting the cost and duration of a block of code
--------------------------------------------------------------------------------------------------------------------------------------------

You can also wrap code with `usage.measure` to get the cost and duration of that block of code:

    import { usage, logger } from "@trigger.dev/sdk";
    
    // Inside a task run function, or inside a function that's called from there.
    const { result, compute } = await usage.measure(async () => {
      //...Do something for 1 second
      return {
        foo: "bar",
      };
    });
    
    logger.info("Result", { result, compute });
    /* result = {
        foo: "bar"
      }
      compute = {
        costInCents: 0.01700,
        durationMs: 1000,
      }
    */
    

This will work from inside the `run` function, our lifecycle hooks (like `onStart`, `onFailure`, `onSuccess`, etc.), or any function you’re calling from the `run` function. It won’t work for code that’s not executed using Trigger.dev.

Was this page helpful?

YesNo

[Previous](https://trigger.dev/docs/tasks/streams)
[ContextGet the context of a task run.\
\
Next](https://trigger.dev/docs/context)

Ctrl+I

Assistant

Responses are generated using AI and may contain mistakes.
