> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# Schedule outreach call

POST https://api-sandbox.payabli.com/api/Vendor/enrich/schedule_call/{entry}
Content-Type: application/json

Schedules an AI outreach call to a vendor to collect their preferred payment method and contact email. This is the third enrichment stage. Calls are scheduled for the next business day at around 9 AM in the vendor's timezone, with retries on no-answer and a fallback payment method applied when retries are exhausted. This feature is opt-in at the org level. Contact your Payabli representative to enable it, provision a phone number, and discuss pricing.

Reference: https://docs.payabli.com/developers/api-reference/vendor/schedule-enrichment-call

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: payabliApi-oas
  version: 1.0.0
paths:
  /Vendor/enrich/schedule_call/{entry}:
    post:
      operationId: schedule-enrichment-call
      summary: Schedule outreach call
      description: >-
        Schedules an AI outreach call to a vendor to collect their preferred
        payment method and contact email. This is the third enrichment stage.
        Calls are scheduled for the next business day at around 9 AM in the
        vendor's timezone, with retries on no-answer and a fallback payment
        method applied when retries are exhausted. This feature is opt-in at the
        org level. Contact your Payabli representative to enable it, provision a
        phone number, and discuss pricing.
      tags:
        - subpackage_vendor
      parameters:
        - name: entry
          in: path
          description: Entrypoint identifier.
          required: true
          schema:
            type: string
        - name: requestToken
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorScheduleCallResponse'
        '400':
          description: Bad request / invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '401':
          description: Unauthorized request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '429':
          description: Too many requests. The calling system is rate limited.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '503':
          description: Database connection error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VendorScheduleCallRequest'
servers:
  - url: https://api-sandbox.payabli.com/api
    description: Sandbox
  - url: https://api.payabli.com/api
    description: Production
components:
  schemas:
    VendorScheduleCallRequest:
      type: object
      properties:
        vendorId:
          type: integer
          format: int64
          description: >-
            ID of the vendor to call. Must be active and belong to the
            entrypoint in the path.
        phone:
          type: string
          description: >-
            Vendor phone number to call, digits only. Optional. When omitted,
            Payabli uses the phone number on the vendor's record. If the vendor
            has no phone on record, the request returns an error.
        enrichmentId:
          type: string
          description: >-
            ID of the originating enrichment run to associate with this call.
            Optional. When omitted, Payabli generates a standalone call schedule
            and skips the enrichment lookup. The bill due-date check only runs
            when both `enrichmentId` and `billId` are supplied.
        billId:
          type: integer
          format: int64
          description: >-
            Bill ID used for the due-date check. When the bill is due in fewer
            than three days, the call is skipped and the fallback method is
            applied. Only evaluated when `enrichmentId` is also supplied.
        fallbackMethod:
          type: string
          description: >-
            Payment method to apply to the vendor record if the call can't
            determine a preference or all retries are exhausted. Values are
            `check` (the default) or `managed`.
        maxRetries:
          type: integer
          description: >-
            Number of times to retry the call if the vendor doesn't answer.
            Defaults to 3. Maximum is 5. The get outreach call status response
            reports this value as `maxAttempts`.
        timezone:
          type: string
          description: >-
            IANA timezone identifier used to schedule the call in the vendor's
            local time. Defaults to `America/New_York`.
        sendNow:
          type: boolean
          description: >-
            When `true`, dispatches the call immediately and bypasses the
            business-hours window and the bill due-date check. Defaults to
            `false`.
      required:
        - vendorId
      description: Request body for scheduling an AI outreach call to a vendor.
      title: VendorScheduleCallRequest
    Responsecode:
      type: integer
      description: |
        Code for the response. Learn more in
        [API Response Codes](/developers/api-reference/api-responses).
      title: Responsecode
    PageIdentifier:
      type: string
      description: Auxiliary validation used internally by payment pages and components.
      title: PageIdentifier
    RoomIdNotInUse:
      type: integer
      format: int64
      description: Field not in use on this endpoint. It always returns `0`.
      title: RoomIdNotInUse
    IsSuccess:
      type: boolean
      description: |
        Boolean indicating whether the operation was successful. A `true` value
        indicates success. A `false` value indicates failure.
      title: IsSuccess
    ResponseText:
      type: string
      description: |
        Response text for operation: 'Success' or 'Declined'.
      title: ResponseText
    VendorScheduleCallResponseData:
      type: object
      properties:
        callScheduleId:
          type: integer
          description: Identifier for the scheduled call.
        enrichmentId:
          type: string
          description: >-
            ID of the enrichment run associated with this call. When the request
            omits `enrichmentId`, Payabli generates one and returns it here.
        scheduledCallDate:
          type: string
          description: ISO-8601 timestamp of the next scheduled call attempt.
        status:
          type: string
          description: >-
            Status of the call schedule. Values are `pending`, `dispatched`,
            `retry_scheduled`, `completed`, and `fallback_applied`.
      description: Scheduled call details.
      title: VendorScheduleCallResponseData
    VendorScheduleCallResponse:
      type: object
      properties:
        responseCode:
          $ref: '#/components/schemas/Responsecode'
        pageIdentifier:
          $ref: '#/components/schemas/PageIdentifier'
        roomId:
          $ref: '#/components/schemas/RoomIdNotInUse'
        isSuccess:
          $ref: '#/components/schemas/IsSuccess'
        responseText:
          $ref: '#/components/schemas/ResponseText'
        responseData:
          $ref: '#/components/schemas/VendorScheduleCallResponseData'
      required:
        - responseText
      description: Response from the schedule outreach call endpoint.
      title: VendorScheduleCallResponse
    PayabliErrorBodyResponseData:
      type: object
      properties:
        explanation:
          type: string
          description: Human-readable explanation of what happened.
        todoAction:
          type: string
          description: Suggested resolution.
      description: Object with detailed error context.
      title: PayabliErrorBodyResponseData
    PayabliErrorBody:
      type: object
      properties:
        isSuccess:
          type: boolean
          description: Always `false` for error responses.
        responseCode:
          type: integer
          description: |
            Code for the response. Learn more in
            [API Response Codes](/developers/api-reference/api-responses).
        responseText:
          type: string
          description: Error text describing what went wrong.
        responseData:
          $ref: '#/components/schemas/PayabliErrorBodyResponseData'
          description: Object with detailed error context.
      required:
        - isSuccess
        - responseText
      description: |
        Shape returned by every Payabli API error response. The `responseData`
        object carries human-readable error context.
      title: PayabliErrorBody
  securitySchemes:
    APIKeyAuth:
      type: apiKey
      in: header
      name: requestToken

```

## Examples



**Request**

```json
{
  "vendorId": 456,
  "phone": "5555550200",
  "enrichmentId": "enrich-3890-a1b2c3d4",
  "billId": 54323,
  "fallbackMethod": "check",
  "maxRetries": 3,
  "timezone": "America/New_York"
}
```

**Response**

```json
{
  "responseText": "Success",
  "responseCode": 1,
  "pageIdentifier": null,
  "roomId": 0,
  "isSuccess": true,
  "responseData": {
    "callScheduleId": 430,
    "enrichmentId": "enrich-3890-a1b2c3d4",
    "scheduledCallDate": "2026-06-16T13:00:00Z",
    "status": "dispatched"
  }
}
```

**SDK Code**

```typescript
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.vendor.scheduleEnrichmentCall("8cfec329267", {
        vendorId: 456,
        phone: "5555550200",
        enrichmentId: "enrich-3890-a1b2c3d4",
        billId: 54323,
        fallbackMethod: "check",
        maxRetries: 3,
        timezone: "America/New_York",
    });
}
main();

```

```python
from payabli import payabli

client = payabli(
    api_key="YOUR_API_KEY_HERE",
)

client.vendor.schedule_enrichment_call(
    entry="8cfec329267",
    vendor_id=456,
    phone="5555550200",
    enrichment_id="enrich-3890-a1b2c3d4",
    bill_id=54323,
    fallback_method="check",
    max_retries=3,
    timezone="America/New_York",
)

```

```java
package com.example.usage;

import io.github.payabli.api.PayabliPayabliApiOasClient;
import io.github.payabli.api.resources.vendor.requests.ScheduleEnrichmentCallRequest;

public class Example {
    public static void main(String[] args) {
        PayabliPayabliApiOasClient client = PayabliPayabliApiOasClient
            .builder()
            .apiKey("YOUR_API_KEY_HERE")
            .build();

        client.vendor().scheduleEnrichmentCall(
            "8cfec329267",
            ScheduleEnrichmentCallRequest
                .builder()
                .vendorId(456L)
                .phone("5555550200")
                .enrichmentId("enrich-3890-a1b2c3d4")
                .billId(54323L)
                .fallbackMethod("check")
                .maxRetries(3)
                .timezone("America/New_York")
                .build()
        );
    }
}
```

```ruby
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.vendor.schedule_enrichment_call(
  entry: "8cfec329267",
  vendor_id: 456,
  phone: "5555550200",
  enrichment_id: "enrich-3890-a1b2c3d4",
  bill_id: 54323,
  fallback_method: "check",
  max_retries: 3,
  timezone: "America/New_York"
)

```

```csharp
using PayabliPayabliApiOas;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliPayabliApiOasClient(
            apiKey: "YOUR_API_KEY_HERE"
        );

        await client.Vendor.ScheduleEnrichmentCallAsync(
            "8cfec329267",
            new ScheduleEnrichmentCallRequest {
                VendorId = 456L,
                Phone = "5555550200",
                EnrichmentId = "enrich-3890-a1b2c3d4",
                BillId = 54323L,
                FallbackMethod = "check",
                MaxRetries = 3,
                Timezone = "America/New_York"
            }
        );
    }

}

```

```go
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithApiKey(
            "YOUR_API_KEY_HERE",
        ),
    )
    request := &payabli.ScheduleEnrichmentCallRequest{
        VendorId: int64(456),
        Phone: payabli.String(
            "5555550200",
        ),
        EnrichmentId: payabli.String(
            "enrich-3890-a1b2c3d4",
        ),
        BillId: payabli.Int64(
            int64(54323),
        ),
        FallbackMethod: payabli.String(
            "check",
        ),
        MaxRetries: payabli.Int(
            3,
        ),
        Timezone: payabli.String(
            "America/New_York",
        ),
    }
    client.Vendor.ScheduleEnrichmentCall(
        context.TODO(),
        "8cfec329267",
        request,
    )
}

```

```php
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\Vendor\Requests\ScheduleEnrichmentCallRequest;

$client = new PayabliClient(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->vendor->scheduleEnrichmentCall(
    '8cfec329267',
    new ScheduleEnrichmentCallRequest([
        'vendorId' => 456,
        'phone' => '5555550200',
        'enrichmentId' => 'enrich-3890-a1b2c3d4',
        'billId' => 54323,
        'fallbackMethod' => 'check',
        'maxRetries' => 3,
        'timezone' => 'America/New_York',
    ]),
);

```

```swift
import Foundation

let headers = [
  "requestToken": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "vendorId": 456,
  "phone": "5555550200",
  "enrichmentId": "enrich-3890-a1b2c3d4",
  "billId": 54323,
  "fallbackMethod": "check",
  "maxRetries": 3,
  "timezone": "America/New_York"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/Vendor/enrich/schedule_call/8cfec329267")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```