---
title: "Request permission details for a saved task"
method: POST
path: "/v1/autonomy/creation-candidates"
tags: ["autonomy-creation"]
---

# Request permission details for a saved task

`POST /v1/autonomy/creation-candidates`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/autonomy/creation-candidates`
- Auth: HTTP bearer

Report the latest permission setup of a saved task you created, or record new explicit choices for it under a new attempt id.

## Headers

- `X-Tenant-Id` string, nullable

## Request body

- CreationCandidateRequest: Ask for the permission setup of a task that is already saved. Without a declaration, or with the declaration the latest attempt already holds, the answer is that latest attempt. Different explicit choices get a new attempt id.
  - `source_kind` 'task_cron' | 'event_trigger', required
  - `source_id` string, uuid, required
  - `declaration` CreationDeclaration
    - `task` TaskDeclaration, required
      - `purpose` string, required: One plain sentence.
      - `deliverables` string[]: Short plain phrases.
      - `lines` DeclaredLine[], required: In order; repeat entries for repeats.
        - `tool_name` string, required: Exact.
        - `pins` object: Targets; omit varying args.
        - `targets` object[]: Arg map/target instead of pins.
        - `short_summary` string, nullable
        - `call_arguments` object, nullable: Exact planned args.
    - `arguments` object
    - `reads` CreationReadScope[]
      - `tool_name` string, required
      - `principal_key` string, required
      - `source` string, required
    - `lines` CreationPermissionLineInput[], nullable
      - `tool_name` string, required
      - `arguments` object, required
      - `reads` CreationReadScope[]
        - `tool_name` string, required
        - `principal_key` string, required
        - `source` string, required
      - `item_binding` CreationItemBindingInput
        - `kind` 'none' | 'selected_target' | 'source_item'
        - `read_tool_name` string, nullable
        - `target_argument` string, nullable
        - `resource_namespace` string, nullable
      - `call_cap` integer
      - `item_cap` integer
    - `max_writes_per_run` integer

## Response `200`

Successful Response

- CreationAttemptStatus: One permission-setup attempt for a saved task.
  - `attempt_id` string, uuid, required
  - `source_kind` 'task_cron' | 'event_trigger', required
  - `source_id` string, uuid, required
  - `state` 'unclaimed' | 'claimed' | 'completed' | 'failed' | 'superseded', required
  - `outcome` string, nullable, required
  - `candidate_id` string, uuid, nullable, required
  - `permission_active` boolean
  - `approved_permission` CreationApprovedPermission: The creator's live standing permission, separate from prepared details.
    - `grant_id` string, uuid, required
    - `tier` 'A' | 'B', required
    - `candidate_id` string, uuid, nullable, required
    - `instruction` string, required
    - `tool_names` string[], required
    - `external_account_id` string, required
    - `verified_principal` string, nullable, required
    - `fields` CreationCandidateField[], required
      - `name` string, required
      - `mode` string, required
      - `role` string, required
      - `cardinality` string, required
      - `element_type` string, nullable, required
      - `fixed` boolean, required
      - `value` unknown
      - `pin_reason` string, nullable, required
      - `max_items` integer, nullable, required
    - `reads` CreationApprovedRead[], required
      - `provider` string, required
      - `external_account_id` string, required
      - `principal_key` string, required
      - `source` string, required
    - `max_occurrences` integer, required
    - `max_actions` integer, required
    - `max_writes_per_run` integer, nullable, required
    - `expires_at` string, date-time, required
    - `lines` CreationCandidateLine[]
      - `line_id` string, required
      - `tool_name` string, required
      - `tool_ref` string, required
      - `account` CreationCandidateAccount, required
        - `provider` string, required
        - `external_account_id` string, required
        - `verified_principal` string, required
        - `connection_generation` integer, required
      - `fields` CreationCandidateField[], required
        - `name` string, required
        - `mode` string, required
        - `role` string, required
        - `cardinality` string, required
        - `element_type` string, nullable, required
        - `fixed` boolean, required
        - `value` unknown
        - `pin_reason` string, nullable, required
        - `max_items` integer, nullable, required
      - `call_cap` integer, required
      - `item_cap` integer, required
      - `item_binding` CreationItemBindingView, required
        - `kind` 'none' | 'selected_target' | 'source_item', required
        - `target_argument` string, nullable
        - `resource_namespace` string, nullable
        - `read` CreationCandidateRead
          - `account` CreationCandidateAccount, required
            - `provider` string, required
            - `external_account_id` string, required
            - `verified_principal` string, required
            - `connection_generation` integer, required
          - `principal_key` string, required
          - `source` string, required
        - `read_tool_ref` string, nullable
        - `read_schema_fingerprint` string, nullable
        - `extractor_code` string, nullable
        - `extractor_version` string, nullable
        - `projection_fingerprint` string, nullable
        - `toolkit_version` string, nullable
      - `normalization_changes` string[]
    - `repeat_scope` 'occurrence', nullable
    - `repeat_disclosure` string, nullable
  - `review` 'available' | 'unavailable' | 'expired', nullable

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `409`: Conflict
- `422`: Validation error

---

[API](https://skmtc.dev/patricia/apis/patricia-api.md) · [All operations](https://skmtc.dev/patricia/apis/patricia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/patricia/apis/patricia-api/revisions/0dfb44495ea1?raw)
