---
title: "Create an annotation"
method: POST
path: "/annotations"
tags: ["Annotations"]
---

# Create an annotation

`POST /annotations`

## Request body

- AnnotationsCreate
  - `resource_type` string, required
  - `resource_id` string, uuid, required
  - `controlled_attribute_id` integer, required
  - `controlled_value_id` integer, required

## Response `200`

The annotation just created

- ResultsAnnotations
  - `total_results` integer, required
  - `page` integer, required
  - `per_page` integer, required
  - `results` Annotation[], required
    - `concatenated_attr_val` string
    - `controlled_attribute` ControlledTerm, nullable
      - `id` integer, required — Unique auto-increment integer identifier.
      - `blocking` boolean
      - `is_value` boolean
      - `excepted_taxon_ids` integer[]
      - `label` string
      - `labels` object[]
        - `id` integer
        - `definition` string
        - `label` string
        - `locale` string
        - `valid_within_clade` integer, nullable
      - `multivalued` boolean
      - `ontology_uri` string
      - `taxon_ids` integer[]
      - `uri` string
      - `uuid` string, uuid, nullable
      - `valid_within_clade` integer, nullable
      - `values` ControlledTerm[]
    - `controlled_attribute_id` integer
    - `controlled_value` ControlledTerm, nullable
      - `id` integer, required — Unique auto-increment integer identifier.
      - `blocking` boolean
      - `is_value` boolean
      - `excepted_taxon_ids` integer[]
      - `label` string
      - `labels` object[]
        - `id` integer
        - `definition` string
        - `label` string
        - `locale` string
        - `valid_within_clade` integer, nullable
      - `multivalued` boolean
      - `ontology_uri` string
      - `taxon_ids` integer[]
      - `uri` string
      - `uuid` string, uuid, nullable
      - `valid_within_clade` integer, nullable
      - `values` ControlledTerm[]
    - `controlled_value_id` integer
    - `user` User, nullable
      - `id` integer, required — Unique auto-increment integer identifier.
      - `uuid` string, uuid
      - `created_at` string, date-time
      - `description` string, nullable
      - `faved_project_ids` number[] — Ordered list of IDs of projects the user has faved
      - `icon` string, nullable
      - `icon_url` string, nullable
      - `identifications_count` integer
      - `journal_posts_count` integer
      - `annotated_observations_count` integer
      - `last_active` string, date-time
      - `login` string
      - `monthly_supporter` boolean, nullable
      - `name` string, nullable
      - `observations_count` integer
      - `orcid` string, nullable
      - `preferences` object
        - `prefers_community_taxa` boolean — Whether the user allows the Community Taxon to be the taxon their observation is associated with
        - `prefers_observation_fields_by` 'anyone' | 'curators' | 'observer'
        - `prefers_project_addition_by` 'any' | 'joined' | 'none'
      - `roles` string[]
      - `site` Site, nullable
        - `id` integer, required — Unique auto-increment integer identifier.
        - `icon_url` string — URL of an icon image for the site
        - `locale` string, nullable — Default language code for users of this site
        - `name` string — Full name of the site
        - `place_id` integer, nullable — Integer ID of the default search place for this site
        - `site_name_short` string, nullable — Short name for this site
        - `url` string
      - `site_id` integer, nullable
      - `spam` boolean
      - `species_count` integer
      - `suspended` boolean
      - `updated_at` string, date-time
    - `user_id` integer
    - `uuid` string, uuid, required
    - `vote_score` integer
    - `votes` Vote[]
      - `id` integer — Unique auto-increment integer identifier.
      - `created_at` string
      - `user` User, nullable
        - `id` integer, required — Unique auto-increment integer identifier.
        - `uuid` string, uuid
        - `created_at` string, date-time
        - `description` string, nullable
        - `faved_project_ids` number[] — Ordered list of IDs of projects the user has faved
        - `icon` string, nullable
        - `icon_url` string, nullable
        - `identifications_count` integer
        - `journal_posts_count` integer
        - `annotated_observations_count` integer
        - `last_active` string, date-time
        - `login` string
        - `monthly_supporter` boolean, nullable
        - `name` string, nullable
        - `observations_count` integer
        - `orcid` string, nullable
        - `preferences` object
          - `prefers_community_taxa` boolean — Whether the user allows the Community Taxon to be the taxon their observation is associated with
          - `prefers_observation_fields_by` 'anyone' | 'curators' | 'observer'
          - `prefers_project_addition_by` 'any' | 'joined' | 'none'
        - `roles` string[]
        - `site` Site, nullable
          - `id` integer, required — Unique auto-increment integer identifier.
          - `icon_url` string — URL of an icon image for the site
          - `locale` string, nullable — Default language code for users of this site
          - `name` string — Full name of the site
          - `place_id` integer, nullable — Integer ID of the default search place for this site
          - `site_name_short` string, nullable — Short name for this site
          - `url` string
        - `site_id` integer, nullable
        - `spam` boolean
        - `species_count` integer
        - `suspended` boolean
        - `updated_at` string, date-time
      - `user_id` integer
      - `vote_flag` boolean
      - `vote_scope` string, nullable

---

[API](https://skmtc.net/inaturalist/apis/inaturalist-version-2-api.md) · [All operations](https://skmtc.net/inaturalist/apis/inaturalist-version-2-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/inaturalist/inaturalist-version-2-api/revisions/f739db716aaf/schema)
