Create projects

Creates a Sentry project under the caller's org and returns it.

POST /v1/o11y/sentinel/projects

Addresshttps://api.hanzo.ai/v1/o11y/sentinel/projects
MethodPOST
Operationpost_o11y_sentinel_projects
AuthAuthorization: Bearer $HANZO_API_KEY

Creates a Sentry project under the caller's org and returns it. Only the name, and optionally a slug and platform, are the caller's to set; the org and id are server-assigned. The slug is the product name the event plane stores, so a project reads that product's errors.

Callers need the editor role; the runtime's own gate enforces it.

Request

3 fields, body application/json (required).

FieldInTypeRequiredDescription
namebodystringyesName is the project's display name.
platformbodystring—Platform is the reporting runtime, e.g. go, python, javascript.
slugbodystring—Slug is the project's short name.

Response

StatusBodyMeaning
200o11y.O11ySentryProjectOutok
202Approvalheld for approval
defaultproblem-detailsrefused

200 body — 9 fields.

FieldInTypeAlwaysDescription
databodyo11y.O11ySentryProject—
data.createdAtbodystring (date-time)—CreatedAt is when the project was created.
data.idbodystring—ID is the project id.
data.namebodystring—Name is the project's display name.
data.platformbodystring—Platform is the reporting runtime, e.g. go, python, javascript.
data.slugbodystring—Slug is the project's short name.
data.statusbodystring—Status is the project's lifecycle state: active or disabled.
data.updatedAtbodystring (date-time)—UpdatedAt is when the project last changed.
statusbodystring—Status is "success".

Failure carries the platform error shape — see Errors.

Examples

hanzo o11y sentinel projects create --name <name>
import { Configuration, O11yApi } from 'hanzoai';

const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postO11ySentinelProjects({ name: "<name>" });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import O11yApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = O11yApi(client).post_o11y_sentinel_projects(name="<name>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.O11yAPI.PostO11ySentinelProjects(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, o11y_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = o11y_api::post_o11y_sentinel_projects(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new O11yApi(client).postO11ySentinelProjects();
curl -X POST https://api.hanzo.ai/v1/o11y/sentinel/projects \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "name": "<name>"
     }'

MCP reaches o11y through the o11y tool, which names its 307 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_o11y_autocomplete_aggregate_attributes"
         }
       }
     }'

O11y API · All Hanzo APIs · Interactive reference

Was this page useful?