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

# Install a service from a direct URL

> Downloads the definition file from the supplied direct URL, validates the manifest, and stores it as a new service under the supplied id and adapter. No registry source is stored.



## OpenAPI

````yaml /cyrnel/openapi.json post /services
openapi: 3.0.0
info:
  title: Cyrnel API
  description: >-
    Cyrnel is a universal layer that connects AI agents and LLM applications to
    any external service, API, or device regardless of protocol or standard. It
    acts as an adaptive bridge between your AI and the outside world, enabling
    seamless integrations through code execution, async operation handling, and
    built-in observability and security controls.
  version: 1.0.0
servers:
  - url: http://localhost:9371
security: []
paths:
  /services:
    post:
      tags:
        - Services
      summary: Install a service from a direct URL
      description: >-
        Downloads the definition file from the supplied direct URL, validates
        the manifest, and stores it as a new service under the supplied id and
        adapter. No registry source is stored.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceDirectInstallRequest'
      responses:
        '201':
          description: The service was installed and stored.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceCreatedResponse'
        '400':
          description: >-
            The install payload was invalid or the downloaded definition failed
            validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: A bearer token was required but missing or invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '409':
          description: A service already exists with the requested id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '413':
          description: The downloaded definition exceeded the configured size limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: The service could not be installed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '502':
          description: The definition file could not be downloaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
components:
  schemas:
    ServiceDirectInstallRequest:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          description: >-
            Identifier to assign to the new service. Must be a valid identifier
            matching /^[A-Za-z_$][A-Za-z0-9_$]*$/.
        url:
          type: string
          minLength: 1
          description: Direct URL of the service definition file to download and install.
        adapter:
          type: string
          minLength: 1
          description: Adapter module identifier responsible for the service.
      required:
        - id
        - url
        - adapter
      description: Request body used to install a service from a direct URL.
    ServiceCreatedResponse:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          description: Identifier assigned to the newly installed service.
      required:
        - id
      description: Response returned after a service is installed.
    ApiErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message returned by the API.
      required:
        - error
      description: Standard error envelope returned by the HTTP error middleware.

````