---
title: "Create a probe location (kind=public is root-only)"
method: POST
path: "/api/{org_id}/synthetics/locations"
tags: ["Synthetics"]
---

# Create a probe location (kind=public is root-only)

`POST /api/{org_id}/synthetics/locations`

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

## Path parameters

- `org_id` string, required

## Request body

- union
  - object
    - `enabled` boolean
    - `id` string, nullable: Public rows may pin their id (e.g. "aws-us-east-1" — synthetics reference locations by this string). Ignored for private rows (KSUID).
    - `kind` string: "public" (root only, visible to all orgs) | "private" (default).
    - `label` string, required
    - `pool` string, nullable: Queue routing key; defaults to `net-<id>` (public) or `private-<org>-<region>` (private).
    - `provider` string
    - `region` string, required
  - object
    - `locations` CreateLocationRequest[], required
      - `enabled` boolean
      - `id` string, nullable: Public rows may pin their id (e.g. "aws-us-east-1" — synthetics reference locations by this string). Ignored for private rows (KSUID).
      - `kind` string: "public" (root only, visible to all orgs) | "private" (default).
      - `label` string, required
      - `pool` string, nullable: Queue routing key; defaults to `net-<id>` (public) or `private-<org>-<region>` (private).
      - `provider` string
      - `region` string, required

## Response `200`

Success

- union
  - CreateLocationResponse: Private rows carry the org's `o2syn_` token, withheld without PUT on the default folder.
    - `install` string, nullable
    - `location` SyntheticsLocationRecord, required
      - `created_at` integer, required
      - `enabled` boolean, required
      - `id` string, required
      - `kind` string, required
      - `label` string, required
      - `org_id` string, nullable
      - `pool` string, required
      - `provider` string, required
      - `region` string, required
      - `updated_at` integer, required
    - `token` string, nullable
  - object
    - `results` CreateLocationResult[], required
      - `error` string, nullable
      - `id` string, nullable
      - `label` string, nullable
      - `ok` boolean, required
      - `pool` string, nullable

## Other responses

- `400`: Validation error
- `403`: Public locations are root-only

---

[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)
