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

# CreateManagedOrganizationHandoffTokenAPI mints a one-time token that offers an
OWNERLESS managed


> org to a named successor manager, redeemable at POST /v1/managed-organization-adoptions. The owner-minted adoption flow can never run for such an org (it has no owner to consent), so without this it would be permanently pinned to whichever org created it. Consent stays sound: for an ownerless managed org the current manager is the org's entire existing authority, so the handoff grants the successor nothing the minter did not already hold — the minter is RELINQUISHING access. The org service refuses the mint the moment the org has a real owner. Deliberately no MCP tool: durably re-homing an org stays off the model-facing tool surface, like manager-key minting and member adds (see the file header).




## OpenAPI

````yaml /api/openapi.json post /v1/managed-organizations/{orgSlug}/handoff-tokens
openapi: 3.0.0
info:
  title: Erdo API
  description: >-
    Erdo's REST API: query and write datasets, run agents, manage threads,
    integrations, pages, evals, workstreams, and experiments. Authenticate with
    a Bearer API key (erdo_api_...) or scoped token (erdo_token_...).
  version: '2026-07-29'
servers:
  - url: https://api.erdo.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/managed-organizations/{orgSlug}/handoff-tokens:
    post:
      summary: >
        CreateManagedOrganizationHandoffTokenAPI mints a one-time token that
        offers an

        OWNERLESS managed
      description: >
        org to a named successor manager, redeemable at POST
        /v1/managed-organization-adoptions. The owner-minted adoption flow can
        never run for such an org (it has no owner to consent), so without this
        it would be permanently pinned to whichever org created it. Consent
        stays sound: for an ownerless managed org the current manager is the
        org's entire existing authority, so the handoff grants the successor
        nothing the minter did not already hold — the minter is RELINQUISHING
        access. The org service refuses the mint the moment the org has a real
        owner. Deliberately no MCP tool: durably re-homing an org stays off the
        model-facing tool surface, like manager-key minting and member adds (see
        the file header).
      operationId: POST:mcp.CreateManagedOrganizationHandoffTokenAPI
      parameters:
        - allowEmptyValue: true
          explode: false
          in: path
          name: orgSlug
          required: true
          schema:
            type: string
          style: simple
      requestBody:
        content:
          application/json:
            schema:
              properties:
                successor_manager_slug:
                  type: string
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  expires_at:
                    type: string
                  org_slug:
                    type: string
                  successor_manager_slug:
                    type: string
                  token:
                    type: string
                type: object
          description: Success response
        default:
          $ref: '#/components/responses/APIError'
components:
  responses:
    APIError:
      content:
        application/json:
          schema:
            externalDocs:
              url: https://pkg.go.dev/encore.dev/beta/errs#Error
            properties:
              code:
                description: Error code
                example: not_found
                externalDocs:
                  url: https://pkg.go.dev/encore.dev/beta/errs#ErrCode
                type: string
              details:
                description: Error details
                type: object
              message:
                description: Error message
                type: string
            title: APIError
            type: object
      description: Error response
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).

````