---
title: "Register a remote task"
method: POST
path: "/api/{org_id}/tasks"
tags: ["RemoteTasks"]
---

# Register a remote task

`POST /api/{org_id}/tasks`

## 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`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/tasks/post.ts> (a function with typed inputs; its response is checked against the schema)

Registers a remote task as an unverified draft. No Experiment can reference it until a test connection publishes a version.

## Path parameters

- `org_id` string, required

## Request body

- object: One-call registration payload for a complete Remote Task draft.
  - `auth` union: Authentication submitted while registering a new Remote Task. The material is write-only. The backend creates and attaches the stable reference; clients never manufacture or order Secret resources.
    - object
      - `type` 'none', required
    - object
      - `secret` union, required
        - object
          - `type` 'token', required
          - `value` string, required
        - object
          - `password` string, required
          - `type` 'basic', required
          - `username` string, required
      - `type` 'bearer', required
    - object
      - `secret` union, required
        - object
          - `type` 'token', required
          - `value` string, required
        - object
          - `password` string, required
          - `type` 'basic', required
          - `username` string, required
      - `type` 'basic', required
    - object
      - `header_name` string, required
      - `secret` union, required
        - object
          - `type` 'token', required
          - `value` string, required
        - object
          - `password` string, required
          - `type` 'basic', required
          - `username` string, required
      - `type` 'api_key_header', required
  - `contentType` string, nullable
  - `customHeaders` CreateRemoteTaskHeaderBody[], nullable
    - `key` string, required
    - `secret` union
      - object
        - `type` 'token', required
        - `value` string, required
      - object
        - `password` string, required
        - `type` 'basic', required
        - `username` string, required
    - `value` string, nullable
  - `description` string, nullable
  - `endpoint` string, required
  - `httpMethod` string, nullable
  - `maxAttempts` integer, nullable
  - `maxConcurrency` integer, nullable
  - `name` string, required
  - `requestTemplate` string, nullable
  - `responseSchema` string, nullable
  - `signing` CreateRemoteTaskSigningBody
    - `enabled` boolean, required
    - `keyId` string, nullable
    - `secret` union
      - object
        - `type` 'token', required
        - `value` string, required
      - object
        - `password` string, required
        - `type` 'basic', required
        - `username` string, required
  - `timeoutMs` integer, nullable

## Response `200`

- object
  - `auth` RemoteTaskAuthResponse, required: Auth on the way out: the shape, and whether a Secret is configured.
    - `headerName` string, nullable
    - `type` string, required
    - `usesSecret` boolean, required
  - `contentType` string, required
  - `createdAt` integer, required
  - `customHeaders` RemoteTaskHeaderResponse[], required
    - `key` string, required
    - `usesSecret` boolean, required
    - `value` string, nullable
  - `description` string, nullable
  - `draftSourceVersion` integer, nullable
  - `endpoint` string, required
  - `entityId` string, required
  - `httpMethod` string, required
  - `id` string, required
  - `isActive` boolean, required
  - `isDraft` boolean, required
  - `isReferenceable` boolean, required: Whether an Experiment may pin this row.
  - `maxAttempts` integer, required
  - `maxConcurrency` integer, required
  - `name` string, required
  - `orgId` string, required
  - `referencedBy` integer, nullable: Number of live Experiments pinned to any published version of this head. Populated by the list endpoint, which can compute all heads in one batch; omitted from single-version responses.
  - `requestTemplate` string, nullable
  - `responseSchema` string, required
  - `signing` RemoteTaskSigningResponse, required: Signing on the way out. The key id is shown because the receiver needs it to select a key; the secret behind it is not.
    - `enabled` boolean, required
    - `keyId` string, nullable
    - `usesSecret` boolean, required
  - `taskRef` string, nullable: `name@version`, present only when there is a version to pin.
  - `timeoutMs` integer, required
  - `updatedAt` integer, required
  - `verificationError` string, nullable
  - `verificationStatus` string, required
  - `verifiedAt` integer, nullable
  - `version` integer, required: `0` marks the head's draft, which no Experiment can reference.
  - `generatedSigningSecret` GeneratedRemoteTaskSigningSecretBody
    - `keyId` string, 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
- `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)
