SG Ground Truth

POST /entity/<type>

post_entity_type

project is the requirement on every project-scoped type and the identity field is not, whatever the schema says. ?fields is ignored, and the 201 returns the whole record.

API

Params

part value
body the attributes, flat. An entity link is {"type": "Shot", "id": 7650}
project required on every project-scoped type
?fields accepted and ignored

Sample requests

Nothing but a project, which is the whole contract:

r = c.post("/entity/shots", json={"project": {"type": "Project", "id": 1180}})

The whole record, 2348 bytes:

{
  "data": {
    "type": "Shot",
    "attributes": {
      "cached_display_name": "New Shot 7650",
      "code": "New Shot 7650",
      "sg_status_list": "wtg",
      "sg_shot_type": "VFX",
      "created_at": "2026-09-04 03:51:48 UTC",
      "open_notes_count": 0
    },
    "relationships": { "parent_shots": { "data": [] } },
    "id": 7650
  }
}

Without a project:

{"errors": [{"status": 400, "code": 103,
             "title": "API create() missing 'project' attribute: {\"code\" => \"sh010\"}"}]}

With a field that does not exist:

{"errors": [{"status": 400, "code": 103,
             "title": "API create() Shot.sg_not_a_field doesn't exist."}]}

Response codes

status when
201 created
400 API create() missing 'project' attribute
400 API create() Shot.sg_not_a_field doesn't exist.

Edge cases

  • Omitting the identity field is not an error: the server writes New Shot <id> and returns 201. Nothing is unique, so a re-run of an ingest doubles the rows rather than failing.
  • ?fields=code returns 10 attribute keys, not one. Every write ignores it, so re-read the row when you need a dotted path or a narrowed set.
  • An unknown field is a 400 here, unlike an unknown fields name on a read, which is dropped at
    1. Writes are loud about names; reads are silent.
  • created_at comes back as 2026-09-04 03:51:48 UTC, space separated, where a read returns 2026-09-04T03:51:48Z. The same instant in two formats depending on the call.

Every entry on this site is the output of a probe in probes/. The corpus is generated by running those probes against a live Flow Production Tracking site, not written from memory.

Not affiliated with or endorsed by Autodesk. Flow Production Tracking is their product; this is an independent record of how its REST API answers.