# Guided API playground

Explore product actions alongside their sample API requests and responses.

## Execution boundary

This playground is a local simulation with fictional records. No API calls, OAuth connections, writes, settlements, or currency conversions occur. Connector selection changes the request example, not the sample data or verified support. Check current connector coverage and permissions before implementing.

The interactive view supports sample records, an empty response, and an illustrative permission error. Resetting or changing a selection clears local progress. API, use case, and example connector can be shared in the URL; credentials and consumer identifiers are never included.

## How to use it

1. Choose an API, workflow, and example connector.
2. Read the sample records; compare the product view with the request template and response.
3. Apply the records in the local demo. This is an application action, not a second API call.
4. Check coverage and setup, then open the same operation in Explorer for an explicit real request with your own test connection. Keep server credentials outside shared URLs and agent briefs.

## CRM: Sync CRM contacts

Read a page of contacts, then map their IDs and names into your product.

Example connectors (not a support guarantee): Salesforce, HubSpot, Pipedrive.

### Request template

```http
GET https://unify.apideck.com/crm/contacts?limit=3
Authorization: Bearer YOUR_API_KEY
x-apideck-app-id: {APP_ID}
x-apideck-consumer-id: {CONSUMER_ID}
x-apideck-service-id: {SERVICE_ID}
```

### Fictional records

These are the data array, not an executed response. The UI wraps them in a sample 200 response with service, resource, operation, and pagination metadata. The fixture has no next cursor; actual results may require pagination.

```json
[
  {
    "id": "demo-contact-1",
    "name": "Alex Morgan",
    "first_name": "Alex",
    "last_name": "Morgan",
    "company_name": "Northstar Studio"
  },
  {
    "id": "demo-contact-2",
    "name": "Sam Rivera",
    "first_name": "Sam",
    "last_name": "Rivera",
    "company_name": "Juniper Labs"
  },
  {
    "id": "demo-contact-3",
    "name": "Jamie Chen",
    "first_name": "Jamie",
    "last_name": "Chen",
    "company_name": "Harbor Design"
  }
]
```

Local action: Add to workspace. Persist the consumer, connector, and source record ID together. Follow the next cursor before treating the import as complete.

- [Real first-call workspace](https://developers.apideck.com/first-api-call?api=crm&useCase=customer-sync)
- [Operation source](https://developers.apideck.com/apis/crm/reference/contacts/contactsAll.md)
- [Endpoint reference](https://developers.apideck.com/apis/crm/reference/contacts?useCase=customer-sync#contactsAll)
- [Explorer](https://developers.apideck.com/apis/crm/api-explorer?operation=contactsAll&useCase=customer-sync)
- [Coverage](https://developers.apideck.com/apis/crm/coverage?resources=contacts)

## HRIS: Build an employee directory

Read a page of employees and show a small directory in your application.

Example connectors (not a support guarantee): BambooHR, Workday, Personio.

### Request template

```http
GET https://unify.apideck.com/hris/employees?limit=3
Authorization: Bearer YOUR_API_KEY
x-apideck-app-id: {APP_ID}
x-apideck-consumer-id: {CONSUMER_ID}
x-apideck-service-id: {SERVICE_ID}
```

### Fictional records

These are the data array, not an executed response. The UI wraps them in a sample 200 response with service, resource, operation, and pagination metadata. The fixture has no next cursor; actual results may require pagination.

```json
[
  {
    "id": "demo-employee-1",
    "first_name": "Alex",
    "last_name": "Morgan",
    "display_name": "Alex Morgan",
    "department_name": "Design"
  },
  {
    "id": "demo-employee-2",
    "first_name": "Sam",
    "last_name": "Rivera",
    "display_name": "Sam Rivera",
    "department_name": "Engineering"
  },
  {
    "id": "demo-employee-3",
    "first_name": "Jamie",
    "last_name": "Chen",
    "display_name": "Jamie Chen",
    "department_name": "Operations"
  }
]
```

Local action: Update directory. Request only the permissions and fields your directory needs. Handle pagination and employee lifecycle changes before a production sync.

- [Real first-call workspace](https://developers.apideck.com/first-api-call?api=hris&useCase=directory)
- [Operation source](https://developers.apideck.com/apis/hris/reference/employees/employeesAll.md)
- [Endpoint reference](https://developers.apideck.com/apis/hris/reference/employees?useCase=directory#employeesAll)
- [Explorer](https://developers.apideck.com/apis/hris/api-explorer?operation=employeesAll&useCase=directory)
- [Coverage](https://developers.apideck.com/apis/hris/coverage?resources=employees)

## Ecommerce: Import ecommerce orders

Read a page of store orders and populate an order dashboard.

Example connectors (not a support guarantee): Shopify, WooCommerce, BigCommerce.

### Request template

```http
GET https://unify.apideck.com/ecommerce/orders?limit=3
Authorization: Bearer YOUR_API_KEY
x-apideck-app-id: {APP_ID}
x-apideck-consumer-id: {CONSUMER_ID}
x-apideck-service-id: {SERVICE_ID}
```

### Fictional records

These are the data array, not an executed response. The UI wraps them in a sample 200 response with service, resource, operation, and pagination metadata. The fixture has no next cursor; actual results may require pagination.

```json
[
  {
    "id": "demo-order-1",
    "order_number": "DEMO-1041",
    "currency": "USD",
    "total_amount": "129.00"
  },
  {
    "id": "demo-order-2",
    "order_number": "DEMO-1042",
    "currency": "USD",
    "total_amount": "84.50"
  },
  {
    "id": "demo-order-3",
    "order_number": "DEMO-1043",
    "currency": "EUR",
    "total_amount": "210.00"
  }
]
```

Local action: Import into dashboard. Preserve the store and source order ID. Treat money fields as decimals, follow pagination, and reconcile later changes and refunds.

- [Real first-call workspace](https://developers.apideck.com/first-api-call?api=ecommerce&useCase=orders)
- [Operation source](https://developers.apideck.com/apis/ecommerce/reference/orders/ordersAll.md)
- [Endpoint reference](https://developers.apideck.com/apis/ecommerce/reference/orders?useCase=orders#ordersAll)
- [Explorer](https://developers.apideck.com/apis/ecommerce/api-explorer?operation=ordersAll&useCase=orders)
- [Coverage](https://developers.apideck.com/apis/ecommerce/coverage?resources=orders)

## Accounting: Review FX invoices

Read invoice amounts and group the sample by currency before designing reconciliation.

Example connectors (not a support guarantee): Xero, QuickBooks, NetSuite.

### Request template

```http
GET https://unify.apideck.com/accounting/invoices?limit=3
Authorization: Bearer YOUR_API_KEY
x-apideck-app-id: {APP_ID}
x-apideck-consumer-id: {CONSUMER_ID}
x-apideck-service-id: {SERVICE_ID}
```

### Fictional records

These are the data array, not an executed response. The UI wraps them in a sample 200 response with service, resource, operation, and pagination metadata. The fixture has no next cursor; actual results may require pagination.

```json
[
  {
    "id": "demo-invoice-1",
    "number": "DEMO-2101",
    "currency": "USD",
    "total": 1250
  },
  {
    "id": "demo-invoice-2",
    "number": "DEMO-2102",
    "currency": "GBP",
    "total": 840
  },
  {
    "id": "demo-invoice-3",
    "number": "DEMO-2103",
    "currency": "USD",
    "total": 350
  }
]
```

Local action: Group by currency. This is an invoice review, not a payment, exchange-rate quote, or reconciliation result. Inspect payment links and booked rates before building the full FX workflow.

- [Real first-call workspace](https://developers.apideck.com/first-api-call?api=accounting&useCase=fx)
- [Operation source](https://developers.apideck.com/apis/accounting/reference/invoices/invoicesAll.md)
- [Endpoint reference](https://developers.apideck.com/apis/accounting/reference/invoices?useCase=fx#invoicesAll)
- [Explorer](https://developers.apideck.com/apis/accounting/api-explorer?operation=invoicesAll&useCase=fx)
- [Coverage](https://developers.apideck.com/apis/accounting/coverage?resources=invoices)

## Verify and recover

For an empty result, check the intended consumer/company/store, source records, and permissions. For a permission failure, inspect the source user's access and connector scopes; reauthorize only if needed. In the UI, change the scenario back to Sample records to retry the simulation.

Before production, verify current schemas and operation support, map records using consumer plus connector plus source ID, handle all pages, and verify the real result. Do not infer downstream request details from these samples.

[Vault setup](https://developers.apideck.com/guides/vault.md) · [Error recovery](https://developers.apideck.com/errors.md) · [API Explorer guide](https://developers.apideck.com/guides/api-explorer.md)
