> ## Documentation Index
> Fetch the complete documentation index at: https://docs.world.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Incognito Action

> Create an incognito action for your app.



## OpenAPI

````yaml /openapi/developer-portal.json post /api/v2/create-action/{app_id}
openapi: 3.0.3
info:
  title: Developer Portal API
  version: 1.0.0
  description: >-
    OpenAPI reference for Developer Portal endpoints used across Mini Apps and
    World ID.
servers:
  - url: https://developer.world.org
    description: Primary
  - url: https://developer.worldcoin.org
    description: Legacy domain
  - url: https://staging-developer.worldcoin.org
    description: Staging domain
security: []
paths:
  /api/v2/create-action/{app_id}:
    post:
      summary: Create Incognito Action
      description: Create an incognito action for your app.
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateActionRequest'
      responses:
        '200':
          description: Action created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateActionResponse'
        '400':
          description: >-
            Invalid request (`validation_error`), inactive API key
            (`api_key_inactive`), or the action already exists
            (`constraint-violation`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                api_key_inactive:
                  value:
                    code: api_key_inactive
                    detail: API key is inactive.
                    attribute: api_key
                constraint-violation:
                  value:
                    code: constraint-violation
                    detail: Action already exists.
                    attribute: action
        '401':
          description: Missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: unauthorized
                detail: API key is required.
                attribute: api_key
        '403':
          description: >-
            API key rejected: `invalid_app` when the key's team doesn't own
            `app_id`, `invalid_api_key` when the secret doesn't match.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalid_app:
                  value:
                    code: invalid_app
                    detail: API key is not valid for this app.
                    attribute: api_key
                invalid_api_key:
                  value:
                    code: invalid_api_key
                    detail: API key is not valid.
                    attribute: api_key
        '404':
          description: API key not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                code: not_found
                detail: API key not found.
                attribute: api_key
      security:
        - bearerAuth: []
components:
  schemas:
    CreateActionRequest:
      type: object
      required:
        - action
      properties:
        action:
          type: string
          description: Identifier for the incognito action
        name:
          type: string
          description: Human-readable name for the action
        description:
          type: string
          description: Description for the action
        max_verifications:
          type: integer
          default: 1
          description: Maximum number of verifications allowed for this action
    CreateActionResponse:
      type: object
      properties:
        action:
          type: object
          properties:
            action:
              type: string
              description: Action identifier
            name:
              type: string
              description: Action name
            description:
              type: string
              description: Action description
            max_verifications:
              type: integer
              description: Max verifications for the action
            external_nullifier:
              type: string
              description: External nullifier derived from action and app_id
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
        detail:
          type: string
        attribute:
          type: string
          nullable: true
        app_id:
          type: string
          description: Included when the request identifies an app.
        team_id:
          type: string
          description: Included when the route has resolved the app's team.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````