LogoLogo
Go to website
  • Welcome
  • Getting Started
    • Amigo Overview
      • System Components
      • Overcoming LLM Limitations
      • [Advanced] Future-Ready Architecture
      • [Advanced] The Accelerating AI Landscape
    • The Journey with Amigo
      • Partnership Model
  • Concepts
    • Agent Core
      • Core Persona
      • Global Directives
    • Context Graphs
      • State-Based Architecture
      • [Advanced] Field Implementation Guidance
    • Functional Memory
      • Layered Architecture
      • User Model
      • [Advanced] Recall Mechanisms
      • [Advanced] Analytical Capabilities
    • Dynamic Behaviors
      • Side-Effect Architecture
      • Knowledge
      • [Advanced] Behavior Chaining
    • Evaluations
      • [Advanced] Arena Implementation Guide
    • [Advanced] Reinforcement Learning
    • Safety
  • Glossary
  • Advanced Topics
    • Transition to Neuralese Systems
    • Agent V2 Architecture
  • Agent Building Best Practices
    • [Advanced] Dynamic Behaviors Guide
  • Developer Guide
    • Enterprise Integration Guide
      • Authentication
      • User Creation + Management
      • Service Discovery + Management
      • Conversation Creation + Management
      • Data Retrieval + User Model Management
      • Webhook Management
    • API Reference
      • V1/organization
      • V1/conversation
      • V1/service
      • V1/user
      • V1/role
      • V1/admin
      • V1/webhook_destination
      • V1/dynamic_behavior_set
      • V1/metric
      • V1/simulation
      • Models
      • V1/organization
      • V1/service
      • V1/user
      • V1/role
      • V1/conversation
      • V1/admin
      • V1/webhook_destination
      • V1/dynamic_behavior_set
      • V1/metric
      • V1/simulation
      • Models
Powered by GitBook
LogoLogo

Resources

  • Pricing
  • About Us

Company

  • Careers

Policies

  • Terms of Service

Amigo Inc. ©2025 All Rights Reserved.


On this page

Was this helpful?

Export as PDF
  1. Developer Guide
  2. Enterprise Integration Guide

Service Discovery + Management

Understanding Amigo Services

Your integration may include multiple service types, each designed for specific interaction scenarios:

  • Meet & Greet: Optimized for new user onboarding

  • Adaptive Support: Designed for returning user support

Each service has a unique service ID that must be referenced when creating conversations. Though services may be connected in a workflow (e.g., Meet & Greet leading to Adaptive Support), you must initiate conversations with the correct service ID to ensure proper user experience.

Retrieving Available Services

To discover all available services for your organization:

curl --request GET \
     --url 'https://api.amigo.ai/v1/<YOUR-ORG-ID>/service/?limit=10&is_active=true' \
     --header 'Authorization: Bearer <AUTH-TOKEN-OF-USER>' \
     --header 'Accept: application/json'

The response will contain a list of services with their respective IDs, names, and other metadata.

// sample GET services response

{
  "services": [
    {
      "id": "6618791275130b73714e8d1c",
      "name": "Meet & Greet",
      "description": "A service that handles a scenario",
      "icon": null,
      "active_conversation_id": null,
      "is_active": true,
      "service_hierarchical_state_machine_id": "6618791375530b73714e8d1a",
      "agent_id": "6618791275530b73714e9d18",
      "conversation_metrics": []
    },
    ... // more services
  ]
}

Create a Service

curl --request POST \
     --url 'https://api.amigo.ai/v1/<YOUR-ORG-ID>/service/' \
     --header 'Authorization: Bearer <AUTH-TOKEN-OF-USER>' \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --data '
{
  "service_hierarchical_state_machine_id": "8b5c6599bfb8ffc45646b289",
  "agent_id": "0d0b781189c14189526c2603",
  "name": "New Service",
  "description": "A description",
  "is_active": true,
}'

The response will contain the ID of the created service:

{
  "id": "6618791275130b73714e8d1c"
}

Update a Service

To update a service's non-functional metadata, use the following:

curl --request POST \
     --url 'https://api.amigo.ai/v1/<YOUR-ORG-ID>/service/<SERVICE-ID>/' \
     --header 'Authorization: Bearer <AUTH-TOKEN-OF-USER>' \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --data '
{
  "is_active": false,
}'

To change a service's functional fields such as its agent ID, create a new service and delete the old service.

Service Mapping Best Practices

For effective service routing in your application:

  1. Service ID Persistence: Store service IDs in your system with descriptive labels

  2. User Journey Mapping: Create logical mappings between user states and appropriate services:

    • First-time users → Meet & Greet service (e.g. service ID: 67a23a08b02fe1e74341a6f8)

    • Returning users → Reactive Support service (e.g. service ID: 675769a1d71dbf8cf042271f)

  3. Dynamic Routing: Implement logic in your application to direct users to the appropriate service based on their status or needs

Service Versioning

When creating new conversations, you can specify the service version:

  • service_version_set_name: Typically set to "release" for production environments

  • service_id: The unique identifier for the specific service you want to use

This approach ensures users are routed to the correct conversation flow based on their context and needs.

PreviousUser Creation + ManagementNextConversation Creation + Management

Last updated 23 hours ago

Was this helpful?

Get services

get

Retrieve a list of services in this organization.

Permissions

This endpoint is impacted by the following permissions:

  • Only services that the authenticated user has the Service:GetService permission for are returned.
Authorizations
Path parameters
organizationstringRequired
Query parameters
idany ofOptional

The ID of the service to retrieve.

string[]Optional
or
nullOptional
is_activeany ofOptional

Whether the service is active.

booleanOptional
or
nullOptional
sort_bystring[]Optional

The fields to sort the versions by. Supported fields are name and is_active. Specify a + before the field name to indicate ascending sorting and - for descending sorting. Multiple fields can be specified to break ties.

Default: []
limitinteger · min: 1 · max: 20Optional

The maximum number of services to return.

Default: 10
continuation_tokenintegerOptional

The continuation token from the previous request used to retrieve the next page of services.

Default: 0
Header parameters
x-mongo-cluster-nameany ofOptional

The Mongo cluster name to perform this request in. This is usually not needed unless the organization does not exist yet in the Amigo organization infra config database.

stringOptional
or
nullOptional
Responses
200
Succeeded.
application/json
401
Invalid authorization credentials.
403
Missing required permissions.
404
The specified organization does not exist.
422
Invalid request path parameter or request query parameter failed validation.
429
The user has exceeded the rate limit of 50 requests per minute for this endpoint.
503
The service is going through temporary maintenance.
get
GET /v1/{organization}/service/ HTTP/1.1
Host: api.amigo.ai
Authorization: Bearer JWT
Accept: */*
{
  "services": [
    {
      "id": "text",
      "name": "text",
      "version_sets": {
        "ANY_ADDITIONAL_PROPERTY": {
          "agent_version_number": 1,
          "service_hierarchical_state_machine_version_number": 1,
          "llm_model_preferences": {
            "ANY_ADDITIONAL_PROPERTY": {
              "llm_name": "text",
              "top_p": 1,
              "temperature": 1,
              "top_k": 1
            }
          }
        }
      },
      "description": "text",
      "is_active": true,
      "service_hierarchical_state_machine_id": "text",
      "agent_id": "text"
    }
  ],
  "has_more": true,
  "continuation_token": 1
}
  • Understanding Amigo Services
  • Retrieving Available Services
  • GETGet services
  • Create a Service
  • POSTCreate a service
  • Update a Service
  • POSTUpdate a service
  • Service Mapping Best Practices
  • Service Versioning

Create a service

post

Create a new service. Depending on whether an active service with the same name already exists, the endpoint behaves differently:

  • If is_active is False, creates an inactive new service.
  • If is_active is True and no active service with the given name exists, creates a new active service.
  • If is_active is True and an active service with the given name exists, this endpoint throws an error.

The new service will automatically contain an edge version set that uses the latest Agent and ServiceHierarchicalStateMachine versions with no LLM model preference. It will also create a release version set, that will equal to what's specified in the request if the release_version_set is specified, or equal to edge if not.

Permissions

This endpoint requires the following permissions:

  • Service:CreateService for the service to create.
  • Service:CreateVersionSet for the edge and release version sets.
Authorizations
Path parameters
organizationstringRequired
Header parameters
x-mongo-cluster-nameany ofOptional

The Mongo cluster name to perform this request in. This is usually not needed unless the organization does not exist yet in the Amigo organization infra config database.

stringOptional
or
nullOptional
Body
service_hierarchical_state_machine_idstringRequired

The ID of the state machine that this service uses.

Pattern: ^[a-f0-9]{24}$
agent_idstringRequired

The ID of the agent that this service uses.

Pattern: ^[a-f0-9]{24}$
namestring · min: 1Required

The name of this service.

descriptionstring · min: 1Required

A description of this service.

is_activebooleanRequired

Whether the newly-created service is active. Only active services are visible to users on the dashboard. You can later adjust the activeness of this service.

release_version_setany ofOptional

The release version set to use for this service. If not specified, the release version set will be the same as the edge version set, which uses the latest agent and state machine versions with no model preference.

or
nullOptional
Responses
201
Succeeded.
application/json
400
This error could be thrown due to the following reasons: * The specified ID for agent or service hierarchical state machine versions in the `release` version set does not belong to the agent or service hierarchical state machine of the service. * The specified agent or state machine doesn't have any versions.
401
Invalid authorization credentials.
403
Missing required permissions.
404
The specified organization, agent, or service hierarchical state machine do not exist.
409
An active service with the given name already exists.
422
Invalid request path parameter or request body failed validation.
429
The user has exceeded the rate limit of 20 requests per minute for this endpoint.
503
The service is going through temporary maintenance.
post
POST /v1/{organization}/service/ HTTP/1.1
Host: api.amigo.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 349

{
  "service_hierarchical_state_machine_id": "text",
  "agent_id": "text",
  "name": "text",
  "description": "text",
  "is_active": true,
  "release_version_set": {
    "agent_version_number": 1,
    "service_hierarchical_state_machine_version_number": 1,
    "llm_model_preferences": {
      "ANY_ADDITIONAL_PROPERTY": {
        "llm_name": "openai_gpt-4o-2024-11-20",
        "top_p": 1,
        "temperature": 1,
        "top_k": 1
      }
    }
  }
}
{
  "id": "text"
}

Update a service

post

Update fields about a service.

Permissions

This endpoint requires the following permissions:

  • Service:UpdateService for the service.
Authorizations
Path parameters
service_idstringRequired

The identifier of the service to update.

Pattern: ^[a-f0-9]{24}$
organizationstringRequired
Header parameters
x-mongo-cluster-nameany ofOptional

The Mongo cluster name to perform this request in. This is usually not needed unless the organization does not exist yet in the Amigo organization infra config database.

stringOptional
or
nullOptional
Body
nameany ofOptional

The name of the service. Only updated if not-null.

string · min: 1Optional
or
nullOptional
descriptionany ofOptional

A description of this Service. Only updates if not-null.

string · min: 1Optional
or
nullOptional
is_activeany ofOptional

The activeness of the service. Only updated if not-null.

If set to True and the service is currently inactive, no other service with the same name can be active.

If set to False and the service is currently active, it is deactivated. This will error if the service is used in a simulation unit test.

booleanOptional
or
nullOptional
agent_idany ofOptional

The ID of the agent that this service uses. Only updated if not-null.

stringOptionalPattern: ^[a-f0-9]{24}$
or
nullOptional
service_hierarchical_state_machine_idany ofOptional

The ID of the service hierarchical state machine that this service uses. Only updated if not-null.

stringOptionalPattern: ^[a-f0-9]{24}$
or
nullOptional
Responses
200
Succeeded.
application/json
Responseany
400
This may occur for the following reasons: * The request intends to activate a service that uses a deprecated agent, state machine, or LLM, or it uses an invalid agent or state machine. * The request intends to deactivate a service that is used in a simulation unit test.
401
Invalid authorization credentials.
403
Missing required permissions.
404
The specified organization or service do not exist.
409
The request intends to activate a service that has an active service with the same name.
422
Invalid request path parameter or request body failed validation.
429
The user has exceeded the rate limit of 20 requests per minute for this endpoint.
503
The service is going through temporary maintenance.
post
POST /v1/{organization}/service/{service_id}/ HTTP/1.1
Host: api.amigo.ai
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 118

{
  "name": "text",
  "description": "text",
  "is_active": true,
  "agent_id": "text",
  "service_hierarchical_state_machine_id": "text"
}

No content