---
title: "Create a team custom object"
method: POST
path: "/api/v1/teams/{team}/custom_objects"
---

# Create a team custom object

`POST /api/v1/teams/{team}/custom_objects`

Creates a new custom object owned by the specified team. The object is
instantiated against the schema identified by `type` (the schema's
`lookup_key`). All field values are validated against that schema's
field definitions before the object is persisted.

The authenticated user must be a member of the team with sufficient
access. If the team is not found or the caller lacks access, the endpoint
returns 404. If `type` does not match a registered schema for the team's
organization, the endpoint also returns 404.

## Path parameters

- `team` string, required

## Request body

- object
  - `fields` object, required — Map of field values to set on the new object. Keys and value types must conform to the schema identified by `type`.
  - `type` string, required — Schema type identifier (`lookup_key`) that defines the object's fields and validation rules.

## Response `200`

Successful response

- CustomObject — A custom object belonging to an organization. Custom objects store arbitrary structured data defined by a schema type and are scoped to an org, team, or user.
  - `created_at` string, date-time — When the custom object was created (ISO 8601).
  - `fields` object — Map of field names to their current values as defined by the object's schema type.
  - `id` string, required — Unique identifier for the custom object (`cobj_...`).
  - `org` string — ID of the organization this object belongs to (`org_...`).
  - `row_key` string — An optional stable key used to identify this object by a caller-controlled string rather than its generated ID. `null` if not set.
  - `sandbox` string — ID of the sandbox environment this object is scoped to (`dsb_...`). `null` for production objects.
  - `schema_type` string — The lookup key of the schema type that defines this object's field structure. `null` if the schema type has not been set.
  - `team` string — ID of the team that owns this object (`tem_...`). `null` if the object is not team-scoped.
  - `updated_at` string, date-time — When the custom object was last modified (ISO 8601). `null` if the object has never been updated after creation.
  - `user` string — ID of the user that owns this object (`usr_...`). `null` if the object is not user-scoped.
  - `version` integer — Optimistic concurrency version of the object. Increments with each successful update; pass this value in write operations to detect conflicting changes.

## Other responses

- `401` — Unauthorized
- `404` — Team not found or schema type not found
- `422` — Validation error

---

[API](https://skmtc.net/archastro/apis/archastro-platform-api.md) · [All operations](https://skmtc.net/archastro/apis/archastro-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/archastro/archastro-platform-api/versions/a8772b442f86/schema)
