---
title: "Create a signing-key candidate"
method: POST
path: "/api/{org_id}/tasks/{entity_id}/signing/rotate"
tags: ["RemoteTasks"]
---

# Create a signing-key candidate

`POST /api/{org_id}/tasks/{entity_id}/signing/rotate`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/tasks/{entity_id}/signing/rotate`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/tasks/:entity_id/signing/rotate/post.ts> (a function with typed inputs; its response is checked against the schema)

Returns candidate plaintext exactly once. The candidate must pass an explicit test before activation.

## Path parameters

- `org_id` string, required
- `entity_id` string, required

## Request body

- object
  - `keyId` string, nullable
  - `material` union
    - object
      - `type` 'token', required
      - `value` string, required
    - object
      - `password` string, required
      - `type` 'basic', required
      - `username` string, required

## Response `200`

- object
  - `createdAt` integer, required
  - `graceExpiresAt` integer, nullable
  - `keyId` string, nullable
  - `lastVerifiedAt` integer, nullable
  - `purpose` 'auth' | 'signing', required
  - `state` string, required
  - `updatedAt` integer, required
  - `material` union, required
    - object
      - `type` 'token', required
      - `value` string, required
    - object
      - `password` string, required
      - `type` 'basic', required
      - `username` string, required

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `409`: Conflict

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
