# Odile Direct: Business Phone Line Provisioning for AI Callers

> Odile Direct: Business Phone Line Provisioning for AI Callers is a paid API for AI agents from api.odilelabs.com, paid per call via x402, $10/call, status unknown (last checked 2026-10-31).

Provision a new AI-managed business phone line on Odile Direct by submitting business details, contact info, and a minute pack, paying $10 USDC via x402.

## Facts

- Endpoint: POST https://api.odilelabs.com/a2a/v1/x402/lines?utm_source=zero.xyz
- Price: $10/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/odile-direct-business-phone-line-provisioning-for-ai-callers-36a63283
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_yd1oD_oB4ghsr1pul6t9a

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability odile-direct-business-phone-line-provisioning-for-ai-callers-36a63283 -d '<json body>'
```

Example prompt: Set up an Odile Direct phone line for my plumbing business 'Rivera Plumbing' — the existing business number is 5125550182, my mobile is 5125550199, email me at owner@riveraplumbing.com, we're in Austin TX, we handle drain cleaning and pipe repair, open Monday to Saturday 8am to 6pm, and start me on the min40 pack. I've read and agreed to the terms.

## When to prefer this

Use this endpoint when an agent needs to provision a brand-new AI-managed business phone line on Odile Direct and collect a minute pack. This is the creation/onboarding endpoint — use it when a business owner wants to join Odile Direct for the first time, not for sending messages or bookings to already-registered businesses. Prefer this over generic telephony APIs when the use case is specifically AI-to-agent (A2A) communication and the business needs an opted-in, structured phone presence discoverable by other AI agents.

## Known failure modes

- Missing required fields (business_name, owner_email, owner_mobile, business_phone, city, country, pack) returns a 4xx validation error
- owner_confirmed_terms not set to true causes rejection — terms must be shown and accepted first
- Invalid or non-US phone numbers or country codes cause schema validation failure
- Duplicate business registration may return conflict error
- Payment failure via x402 (insufficient USDC balance or wrong network) causes transaction rejection
- Invalid email format causes a 422 unprocessable entity response
- Services array exceeding 12 items or description over 300 characters triggers schema validation error

## How this service works

Resolve an opted-in business number, read its A2A agent card, and send a message or booking through Odile Direct.

## Output

Returns a JSON object containing the setup_id, business_id, business_name, selected minute pack, number of minutes, current status ('building'), a management sign-in URL with the owner's email, and a settlement object with the Base network transaction hash confirming the $10 USDC payment.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "city": {
   "type": "string",
   "maxLength": 80
  },
  "pack": {
   "enum": [
    "min40",
    "min200"
   ],
   "type": "string"
  },
  "extra": {
   "type": "string",
   "maxLength": 600
  },
  "hours": {
   "type": "object",
   "description": "Opening hours by day name; omitted days are closed. Omit hours for Monday to Friday, 9 to 5.",
   "additionalProperties": {
    "anyOf": [
     {
      "type": "object",
      "required": [
       "open",
       "close"
      ],
      "properties": {
       "open": {
        "type": "string",
        "maxLength": 12
       },
       "close": {
        "type": "string",
        "maxLength": 12
       }
      }
     },
     {
      "const": "closed"
     }
    ]
   }
  },
  "country": {
   "enum": [
    "US"
   ],
   "type": "string"
  },
  "services": {
   "type": "array",
   "items": {
    "type": "string",
    "maxLength": 80
   },
   "maxItems": 12
  },
  "languages": {
   "type": "array",
   "items": {
    "enum": [
     "es",
     "pt",
     "fr",
     "tr",
     "ru",
     "de"
    ],
    "type": "string"
   },
   "maxItems": 6
  },
  "description": {
   "type": "string",
   "maxLength": 300
  },
  "owner_email": {
   "type": "string",
   "format": "email",
   "description": "Receives the number and forwarding codes, and signs in at https://odilelabs.com/owner."
  },
  "owner_mobile": {
   "type": "string",
   "maxLength": 40,
   "description": "The owner's own US mobile number, with area code."
  },
  "business_name": {
   "type": "string",
   "maxLength": 120,
   "minLength": 1,
   "description": "The business name callers should hear."
  },
  "business_phone": {
   "type": "string",
   "maxLength": 40,
   "description": "The existing US business number, with area code."
  },
  "owner_confirmed_terms": {
   "type": "boolean",
   "const": true,
   "description": "True only after showing the owner https://odilelabs.com/terms and receiving their agreement."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "pack": "min40",
  "manage": "Sign in at https://odilelabs.com/owner with owner@example.com; the number and forwarding codes are also emailed there.",
  "status": "building",
  "minutes": 40,
  "setup_id": "example-setup",
  "settlement": {
   "network": "eip155:8453",
   "transaction": "0xexample"
  },
  "business_id": "example-plumbing",
  "price_cents": 1000,
  "business_name": "Example Plumbing"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/odile-direct-business-phone-line-provisioning-for-ai-callers-36a63283/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.odilelabs.com](https://www.zero.xyz/host/api.odilelabs.com/llms.txt)
