[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Create an appointment

> Book an appointment for a job with a technician and a time window. Inputs, cURL, Python and Node.js examples and an example response.

Source: https://cotlet.dev/docs/api/servicetrade/create_appointment

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

Book an appointment for a job with a technician and a time window.

ServiceTrade API: https://cotlet.dev/docs/api/servicetrade.md

`POST https://cotlet.dev/api/v1/servicetrade/jobs/{job_id}/appointments`

Access: write. Confirm: waits for the user's OK before it runs.

Returns the new appointment with its status, window, technicians and released flag. Service requests must belong to the job. Leave released false to review the day first, and use update_appointment to release it. By default you confirm each call; you can switch that off for this tool.

## Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `job_id` | integer | yes | Job to book, from list_jobs. |
| `technician_ids` | array | no | Technician ids from list_technicians. |
| `window_start` | string | no | ISO 8601 date-time with offset. |
| `window_end` | string | no | ISO 8601 date-time with offset. |
| `service_request_ids` | array | no | Services of the job to do at this appointment; none means an appointment without services. |
| `released` | boolean | no | true gives the appointment to the technicians now, false keeps it as a draft. |

## Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/servicetrade/jobs/48213/appointments \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"technician_ids":[3301],"window_start":"2026-10-26T08:00:00-04:00","window_end":"2026-10-26T10:00:00-04:00","released":false}'
```

**Python**

```python
result = client.call("servicetrade", "create_appointment", {"job_id":48213,"technician_ids":[3301],"window_start":"2026-10-26T08:00:00-04:00","window_end":"2026-10-26T10:00:00-04:00","released":False})
```

**Node.js**

```js
const result = await cotlet.call('servicetrade', 'create_appointment', {"job_id":48213,"technician_ids":[3301],"window_start":"2026-10-26T08:00:00-04:00","window_end":"2026-10-26T10:00:00-04:00","released":false});
```

**CLI**

```bash
cotlet call servicetrade create_appointment --data '{"job_id":48213,"technician_ids":[3301],"window_start":"2026-10-26T08:00:00-04:00","window_end":"2026-10-26T10:00:00-04:00","released":false}'
```

## Example response

```json
{
  "appointment_id": 90417,
  "job_id": 48213,
  "status": "scheduled",
  "window_start": "2026-10-26T08:00:00-04:00",
  "window_end": "2026-10-26T10:00:00-04:00",
  "technicians": [
    {
      "id": 3301,
      "name": "Marcus Hill"
    }
  ],
  "released": false
}
```

Previous: [List technicians](https://cotlet.dev/docs/api/servicetrade/list_technicians.md)
Next: [Update an appointment](https://cotlet.dev/docs/api/servicetrade/update_appointment.md)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
