---
title: "List service handlers"
method: GET
path: "/services/{service}/handlers"
tags: ["service_handler"]
---

# List service handlers

`GET /services/{service}/handlers`

Returns a list of all handlers (methods) available in the specified service.

## Path parameters

- `service` string, required

## Response `200`

List of handlers available in the service

- ListServiceHandlersResponse — List of all the handlers of a service
  - `handlers` HandlerMetadata[], required
    - `abort_timeout` string, nullable — # Abort timeout This timer guards against stalled service/handler invocations that are supposed to terminate. The abort timeout is started after the 'inactivity timeout' has expired and the service/handler invocation has been asked to gracefully terminate. Once the timer expires, it will abort the service/handler invocation. This timer potentially **interrupts** user code. If the user code needs longer to gracefully terminate, then this value needs to be set accordingly. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
    - `documentation` string, nullable — # Documentation Documentation of the handler, as propagated by the SDKs.
    - `enable_lazy_state` boolean, nullable — # Enable lazy state If true, lazy state will be enabled for all invocations to this service. This is relevant only for Workflows and Virtual Objects. If set, it overrides the value set in the service.
    - `idempotency_retention` string, nullable — # Idempotency retention The retention duration of idempotent requests for this handler. If set, it overrides the value set in the service. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
    - `inactivity_timeout` string, nullable — # Inactivity timeout This timer guards against stalled service/handler invocations. Once it expires, Restate triggers a graceful termination by asking the service invocation to suspend (which preserves intermediate progress). The 'abort timeout' is used to abort the invocation, in case it doesn't react to the request to suspend. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
    - `info` SchemaInfo[] — # Info List of configuration/deprecation information related to this handler.
      - `code` string, nullable
      - `message` string, required
    - `input_description` string, required — # Human readable input description If empty, no schema was provided by the user at discovery time.
    - `input_json_schema` unknown
    - `journal_retention` string, nullable — # Journal retention The journal retention. When set, this applies to all requests to this handler. In case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time. In case this handler is a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
    - `metadata` object — # Metadata Additional handler metadata, as propagated by the SDKs.
    - `name` string, required — # Name The handler name.
    - `output_description` string, required — # Human readable output description If empty, no schema was provided by the user at discovery time.
    - `output_json_schema` unknown
    - `public` boolean — # Public If true, this handler can be invoked through the ingress. If false, this handler can be invoked only from another Restate service.
    - `retry_policy` HandlerRetryPolicyMetadata — # Handler retry policy overrides
      - `exponentiation_factor` number, float, nullable — # Factor The factor to use to compute the next retry attempt.
      - `initial_interval` string, nullable — # Initial Interval Initial interval for the first retry attempt. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
      - `max_attempts` integer, nullable — # Max attempts Number of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.
      - `max_interval` string, nullable — # Max interval Maximum interval between retries. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
      - `on_max_attempts` 'Pause' | 'Kill'
    - `ty` 'Exclusive' | 'Shared' | 'Workflow'

## Other responses

- `400` — Bad request
- `404` — Not found
- `405` — Method not allowed
- `409` — Conflict
- `500` — Internal server error

## Changes

> 8 revisions in range; 1 could not be searched.

- **2026-01-30** `059a44500a5c` — 2 breaking, 14 info
  - added `#/components/schemas/HandlerMetadataType, subschema #1` to the `handlers/items/ty` response property `oneOf` list for the response status `200`
  - the `handlers/items/retry_policy` response's property type/format changed from ``/`` to `object`/`` for status `200`
  - added the non-success response with the status `405`
  - removed the non-success response with the status `403`
  - …12 more

[Change history](https://skmtc.dev/restatedev/apis/admin-api/changes/services/:service/handlers/get.md)

---

[API](https://skmtc.dev/restatedev/apis/admin-api.md) · [All operations](https://skmtc.dev/restatedev/apis/admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/restatedev/admin-api/revisions/5361f4818c71/schema)
