# AmberScript Integration via LowCodeAPI

**Last Updated**: February 11, 2026

## Overview

AmberScript provides professional speech-to-text transcription services with both automatic AI-powered transcription and manual human-verified options. The API allows you to manage transcription projects and custom glossaries for improved accuracy.

**Main Features:**
- Create and manage custom glossaries
- Automatic speech-to-text transcription
- Manual transcription with human verification
- Industry-specific terminology support

## Base Endpoint

```
https://api.lowcodeapi.com/amberscript
```

**Important**: Always include the provider name `amberscript` in the URL path after `api.lowcodeapi.com/`

## Authentication

AmberScript uses Bearer token authentication. When using LowCodeAPI, you only need your LowCodeAPI `api_token` - the system automatically maps your AmberScript API key.

**Required Credentials:**
1. **API Key** - Your AmberScript API key for accessing the service

**Where to get credentials:**
- Visit [AmberScript API](https://app.amberscript.com/api) to generate your API key
- Log in to your AmberScript account and navigate to the API section

**Authentication in requests:**
LowCodeAPI automatically handles authentication by using your stored `api_key` and adding it as a Bearer token in the Authorization header.

## URL Format (Important)

LowCodeAPI supports **two URL formats** for endpoints with path parameters. Always try the **New Format first**, and only fall back to the **Old Format** if it doesn't work.

### New Format (Priority) - Dynamic Path Parameters

Path parameters stay in the URL path. The provider name is always included.

```
https://api.lowcodeapi.com/amberscript/v1/glossaries/{id}?api_token=YOUR_API_TOKEN
```

### Old Format (Fallback) - Sanitized Path + Query Parameters

Path parameters become query parameters. The provider name is always included.

```
https://api.lowcodeapi.com/amberscript/v1/glossaries/id?id={id}&api_token=YOUR_API_TOKEN
```

### Decision Flow for AI Agents

1. Always use **New Format** first - Keep path parameters in the URL path
2. If you get a 404 or error, try **Old Format** with sanitized path
3. Log which format worked for future requests to this provider

Note: Most AmberScript endpoints currently don't use path parameters in the URL, so both formats will be identical for those endpoints.

## API Categories

- **Glossary** - Manage custom glossaries for improved transcription accuracy

## Common Endpoints

### Glossary Management

#### Create a Glossary

**Method:** POST | **Path:** `/v1/users`

**New Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Old Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the glossary |
| `items` | array | No | Array of glossary items with term descriptions |
| `item.name` | string | Yes (in items) | Term which is being described |
| `item.description` | string | No (in items) | Description of the term |
| `names` | array | No | Array of names |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Medical Terminology",
    "items": [
      {
        "name": "MRI",
        "description": "Magnetic Resonance Imaging"
      },
      {
        "name": "ECG",
        "description": "Electrocardiogram"
      }
    ]
  }'
```

**Example Response:**
```json
{
  "data": {
    "id": "glossary_abc123",
    "name": "Medical Terminology",
    "items": [...]
  }
}
```

#### Get a List of Glossaries

**Method:** GET | **Path:** `/v1/users`

**New Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Old Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sortBy` | string | No | Field by which to sort the resulting list of glossaries |
| `sortDirection` | string | No | Sort direction: "DESC" or "ASC" |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN&sortBy=name&sortDirection=ASC"
```

**Example Response:**
```json
{
  "data": {
    "glossaries": [
      {
        "id": "glossary_abc123",
        "name": "Medical Terminology",
        "items": [...]
      }
    ]
  }
}
```

#### Update a Glossary

**Method:** PUT | **Path:** `/v1/users`

**New Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Old Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the glossary |
| `items` | array | No | Array of glossary items with term descriptions |
| `item.name` | string | Yes (in items) | Term which is being described |
| `item.description` | string | No (in items) | Description of the term |
| `names` | array | No | Array of names |

**Example Request:**
```bash
curl -X PUT "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "glossary_abc123",
    "name": "Medical Terminology",
    "items": [...]
  }'
```

#### Delete a Glossary

**Method:** DELETE | **Path:** `/v1/users`

**New Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Old Format URL:**
```
https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN
```

**Note:** Include the glossary ID in the request body to identify which glossary to delete.

**Example Request:**
```bash
curl -X DELETE "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "glossary_abc123"
  }'
```

## Complete Endpoint Reference

## Response Format

All responses from LowCodeAPI are wrapped in a `data` key:

```json
{
  "data": {
    // Actual response from provider API
  }
}
```

The `data` key contains the raw response from the provider's API.

| Method | New Format Path | Old Format Path | Description |
|--------|----------------|----------------|-------------|
| POST | `/v1/users` | `/v1/users` | Create a glossary |
| GET | `/v1/users` | `/v1/users` | Get a list of glossaries |
| PUT | `/v1/users` | `/v1/users` | Update a specific glossary |
| DELETE | `/v1/users` | `/v1/users` | Delete a specific glossary |

## API Definition Endpoints

To discover all available endpoints for AmberScript:

| Format | URL | Description |
|--------|-----|-------------|
| New Format | `https://backend.lowcodeapi.com/amberscript/openapi` | OpenAPI spec with dynamic path parameters |
| Old Format | `https://backend.lowcodeapi.com/amberscript/definition` | API definition with sanitized paths |

**Example:**
```bash
curl -X GET "https://backend.lowcodeapi.com/amberscript/openapi"
```

## Usage Examples

### Example 1: Create and Manage a Glossary

```bash
# Step 1: Create a new glossary
# No ID needed - we're creating a new glossary
curl -X POST "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Technical Terms",
    "items": [
      {
        "name": "API",
        "description": "Application Programming Interface"
      },
      {
        "name": "JSON",
        "description": "JavaScript Object Notation"
      }
    ]
  }'

# Response returns glossary ID: glossary_xyz789
# We'll use this ID in subsequent update/delete operations
# "id": "glossary_xyz789"

# Step 2: List all glossaries to verify creation
# No ID needed - listing all available glossaries
curl -X GET "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN&sortBy=name&sortDirection=ASC"

# Step 3: Update the glossary
# Include glossary_xyz789 from Step 1 in request body to identify which glossary to update
curl -X PUT "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "glossary_xyz789",
    "name": "Technical Terms - Updated",
    "items": [
      {
        "name": "API",
        "description": "Application Programming Interface"
      },
      {
        "name": "JSON",
        "description": "JavaScript Object Notation"
      },
      {
        "name": "REST",
        "description": "Representational State Transfer"
      }
    ]
  }'

# Step 4: Delete the glossary when no longer needed
# Include glossary_xyz789 from Step 1 in request body to identify which glossary to delete
curl -X DELETE "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "glossary_xyz789"
  }'
```

### Example 2: Create Industry-Specific Glossaries

```bash
# Create a medical glossary
# No ID needed - creating new resource
curl -X POST "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Medical",
    "items": [
      {"name": "CT scan", "description": "Computed Tomography scan"},
      {"name": "MRI", "description": "Magnetic Resonance Imaging"}
    ]
  }'

# Create a legal glossary
# No ID needed - creating new resource
curl -X POST "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Legal",
    "items": [
      {"name": "Plaintiff", "description": "Person who brings a case"},
      {"name": "Defendant", "description": "Person accused in a case"}
    ]
  }'

# List all glossaries sorted by name
# No ID needed - listing resources
curl -X GET "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN?sortBy=name&sortDirection=ASC"
```

### Example 3: Query and Sort Glossaries

```bash
# Get all glossaries with default sorting
# No ID or query params needed
curl -X GET "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN"

# Get glossaries sorted by name in ascending order
# sortBy and sortDirection are query parameters, not IDs
curl -X GET "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN&sortBy=name&sortDirection=ASC"

# Get glossaries sorted by name in descending order
# Same parameters, different sortDirection value
curl -X GET "https://api.lowcodeapi.com/amberscript/v1/users?api_token=YOUR_API_TOKEN&sortBy=name&sortDirection=DESC"
```

## Error Handling

Common HTTP status codes and their meanings:

| Status Code | Meaning |
|-------------|---------|
| 200 | Success |
| 400 | Bad Request - Invalid parameters or request body |
| 401 | Unauthorized - Check your API token |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Invalid endpoint or glossary ID |
| 422 | Unprocessable Entity - Validation error in request body |
| 429 | Rate Limit Exceeded - Too many requests |
| 500 | Internal Server Error - Contact AmberScript support |

## Glossary Item Structure

When creating or updating a glossary, items follow this structure:

```json
{
  "name": "Glossary Name",
  "items": [
    {
      "name": "Term",
      "description": "Description of the term for context"
    }
  ]
}
```

**Guidelines for effective glossaries:**
- Use clear, concise term names
- Provide descriptive explanations for context
- Include common abbreviations and their full forms
- Consider industry-specific jargon your transcriptions might contain

## Best Practices

1. **Create domain-specific glossaries** - Separate glossaries for different industries or topics improve accuracy
2. **Keep glossaries updated** - Regularly add new terms as your vocabulary evolves
3. **Use descriptive explanations** - Help transcribers understand context and proper usage
4. **Review transcriptions** - Use feedback to identify frequently misheard terms to add to glossaries
5. **Limit glossary size** - Keep glossaries focused and relevant to maintain high-quality transcriptions

## Official Documentation

- [AmberScript API Documentation](https://amberscript.github.io/api-docs/)
- [AmberScript Dashboard](https://app.amberscript.com/api)
- [Create API Keys](https://app.amberscript.com/api)

## Notes

- All responses from AmberScript via LowCodeAPI are wrapped in a `data` key
- Glossary management endpoints use request body for identification rather than URL path parameters
- The `/v1/users` endpoint handles multiple operations (create, list, update, delete) based on HTTP method and request body
- Sort parameters (`sortBy`, `sortDirection`) are optional query parameters for listing glossaries