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

# Create Entity

> POST /v1/entities

Create a canonical entity for the authenticated organization.



## OpenAPI

````yaml /openapi.json post /v1/entities
openapi: 3.1.0
info:
  title: Waycore Bank Connections API
  description: >-
    Developer-first API for direct bank connections, accounts, and transactions.


    Design goals:

    - Flat records with minimal nesting.

    - Clear, bank-centric naming.

    - One canonical endpoint per resource.

    - Sparse fieldsets via `fields=`.

    - Historical browsing via `GET /transactions`.

    - Incremental ETL via `GET /transactions/sync`.

    - Discover supported institutions via `GET /institutions`.

    - Model downstream client businesses via `/entities` and explicit `entityId`
    ownership.


    Authentication:

    - Opaque API keys passed as `Authorization: Bearer <key>`.

    - Key format: `way_<environment>_<key_id>_<secret>`.

    - Keys are organization-bound, environment-bound (`live` or `test`),
    scope-carrying, and expiring.

    - Managed via the Waycore Console.
  version: 0.5.0
servers:
  - url: https://api.waycore.com
security: []
paths:
  /v1/entities:
    post:
      tags:
        - entities
      summary: Create Entity
      description: |-
        POST /v1/entities

        Create a canonical entity for the authenticated organization.
      operationId: create_entity_v1_entities_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEntityRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entity'
        '400':
          description: >-
            Bad Request. `type` may be `invalid_request` for malformed query
            parameters or validation failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Forbidden
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Conflict
        '429':
          description: >-
            Too Many Requests. Retry after the number of seconds in
            `Retry-After` when present, then retry the same request.
          headers:
            Retry-After:
              description: >-
                Number of seconds to wait before retrying, when rate limiting
                provides a specific backoff.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Internal Server Error
      security:
        - apiKeyBearer:
            - entities:write
components:
  schemas:
    CreateEntityRequest:
      properties:
        externalEntityId:
          type: string
          minLength: 1
          title: Externalentityid
          description: Caller-defined stable identifier for the entity.
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Display name for the entity.
        contactEmails:
          items:
            type: string
            format: email
          type: array
          maxItems: 100
          title: Contactemails
          description: >-
            Email addresses of the people who manage this entity's connections.
            Duplicates are removed (case-insensitively) and order is preserved.
            Defaults to an empty array when omitted. At most 100 addresses.
        metadata:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Metadata
          description: Opaque client-defined metadata.
      type: object
      required:
        - externalEntityId
      title: CreateEntityRequest
    Entity:
      properties:
        entityId:
          type: string
          title: Entityid
          description: Stable, immutable identifier for the entity.
        externalEntityId:
          type: string
          title: Externalentityid
          description: >-
            Stable external identifier for this entity. Integrator-defined for
            customer entities and system-defined for the organization-attached
            entity.
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Display name for the entity, when available.
        contactEmails:
          items:
            type: string
            format: email
          type: array
          title: Contactemails
          description: >-
            Email addresses of the people who manage this entity's connections.
            Used to reach the right person when a connection's configuration is
            invalid or needs attention. Always present; an empty array means no
            contacts have been provided.
        isDefaultOrgEntity:
          type: boolean
          title: Isdefaultorgentity
          description: >-
            Whether this special entity is the organization-attached entity
            managed by Waycore. Use it when the integrator and the end business
            are the same organization.
        metadata:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Metadata
          description: Opaque client-defined metadata.
        createdAt:
          type: string
          format: date-time
          title: Createdat
          description: When the entity was created in this API.
        updatedAt:
          type: string
          format: date-time
          title: Updatedat
          description: When the entity last changed in this API.
      type: object
      required:
        - entityId
        - externalEntityId
        - isDefaultOrgEntity
        - createdAt
        - updatedAt
      title: Entity
    PublicErrorResponse:
      properties:
        type:
          title: Type
          type: string
        message:
          type: string
          title: Message
        requestId:
          anyOf:
            - type: string
            - type: 'null'
          title: Requestid
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
      type: object
      required:
        - type
        - message
      title: PublicErrorResponse
  securitySchemes:
    apiKeyBearer:
      type: http
      scheme: bearer
      bearerFormat: way_<environment>_<key_id>_<secret>
      description: >-
        Opaque API key passed as `Authorization: Bearer <key>`. Keys are
        organization-bound, environment-bound (`live` or `test`),
        scope-carrying, and expiring. Create and manage keys via the console.

````