---
title: "Track a new GEO prompt"
method: POST
path: "/v1/projects/{projectId}/geo/prompts"
tags: ["GEO"]
---

# Track a new GEO prompt

`POST /v1/projects/{projectId}/geo/prompts`

## Request

- Base URL: `https://api.usenotra.com`
- URL: `https://api.usenotra.com/v1/projects/{projectId}/geo/prompts`
- Auth: HTTP bearer

## Path parameters

- `projectId` string, required

## Request body

- CreateGeoPromptRequest
  - `prompt` string, required
  - `tags` string[]: Free-form labels for grouping custom prompts. Lowercased and deduplicated on save.

## Response `201`

Prompt created successfully

- GeoPromptResponse
  - `prompt` GeoPrompt, required
    - `id` string, required
    - `prompt` string, required
    - `enabled` boolean, required
    - `source` 'custom' | 'auto', required
    - `tags` string[], required
    - `createdAt` string, nullable, required
  - `organization` object, required
    - `id` string, required
    - `slug` string, required
    - `name` string, required
    - `logo` string, nullable, required

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key
- `402`: GEO plan or available AI credits required
- `403`: Forbidden
- `404`: Organization, project or resource not found
- `409`: Conflict
- `500`: Internal server error
- `503`: Authentication or billing service unavailable

## Changes

- **2026-09-04** `931a7bd8d32c`: 2 info
  - added the new optional request property `tags`
  - added the required property `prompt/tags` to the response with the `201` status
- **2026-09-02** `fd2fc44c9208`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usenotra/apis/notra-api/changes/v1/projects/:projectId/geo/prompts/post.md)

---

[API](https://skmtc.dev/usenotra/apis/notra-api.md) · [All operations](https://skmtc.dev/usenotra/apis/notra-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usenotra/apis/notra-api/revisions/0332a6e10b77?raw)
