# Oyster Endpoints API

> Oyster Endpoints API on Apizie: 17 endpoints (Create an access token, Approve expense, Decline expense, Retrieve an individual expense, …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://apizie.tech/v1/security:oyster/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `security:oyster`
- Category: Security
- Status: byok
- Source: https://oysterhr.com
- Page: https://apizie.tech/api/security/oyster
- OpenAPI: https://apizie.tech/api/security/oyster/openapi.json

Oyster uses OAuth2 to enable customers to grant access to their data to third party applications. Customers also need to use this API to authenticate themselves when making API requests.

## Endpoints

### Create an access token
`POST https://apizie.tech/v1/security:oyster/authentication-create-access-token` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | Form fields as a JSON object |

### Approve expense
`POST https://apizie.tech/v1/security:oyster/expenses-approve-expense` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Expense ID |

### Decline expense
`POST https://apizie.tech/v1/security:oyster/expenses-decline-expense` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Expense ID |
| body | object | no | JSON request body |

### Retrieve an individual expense
`GET https://apizie.tech/v1/security:oyster/expenses-get-by-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Expense ID |

### Create expense
`POST https://apizie.tech/v1/security:oyster/expenses-create-operation-key` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | JSON request body |

### Retrieve company details
`GET https://apizie.tech/v1/security:oyster/company-details-retrieve` (byok)

### Retrieve all departments
`GET https://apizie.tech/v1/security:oyster/departments-get-all` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| per_page | integer | no |  |
| page | integer | no |  |

### Retrieve an individual engagement
`GET https://apizie.tech/v1/security:oyster/engagements-get-by-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Engagement ID |

### Retrieve all engagements
`GET https://apizie.tech/v1/security:oyster/engagements-get-all` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| per_page | integer | no |  |
| page | integer | no |  |

### Retrieve an operation
`GET https://apizie.tech/v1/security:oyster/operations-get-by-operation-key` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| operation_key | string | yes | Operation key |

### Retrieve an individual payroll
`GET https://apizie.tech/v1/security:oyster/payroll-get-by-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Payroll ID |

### Retrieve all payroll
`GET https://apizie.tech/v1/security:oyster/payroll-get-all-payrolls` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| per_page | integer | no |  |
| page | integer | no |  |
| from | string | no |  |
| to | string | no |  |
| include_records | boolean | no |  |

### Retrieve entitlements
`GET https://apizie.tech/v1/security:oyster/time-off-get-entitlements` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| per_page | integer | no |  |
| page | integer | no |  |

### Approve request
`POST https://apizie.tech/v1/security:oyster/time-off-approve-request` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Time Off Request ID |

### Reject request
`POST https://apizie.tech/v1/security:oyster/time-off-reject-request` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Time Off Request ID |
| body | object | no | JSON request body |

### Retrieve an individual request
`GET https://apizie.tech/v1/security:oyster/time-off-get-request` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | yes | Time Off Request ID |

### Retrieve all requests
`GET https://apizie.tech/v1/security:oyster/time-off-get-all-requests` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| per_page | integer | no |  |
| page | integer | no |  |

## Example
```
curl "https://apizie.tech/v1/security:oyster/authentication-create-access-token" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the Oyster Endpoints API?
Create a free Apizie key, then send POST https://apizie.tech/v1/security:oyster/authentication-create-access-token with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the Oyster Endpoints API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. Oyster Endpoints itself also needs your own key from api.oysterhr.com.

### Can AI agents use the Oyster Endpoints API?
Yes. Add the Apizie MCP server (https://apizie.tech/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key security:oyster.

### What is the status of the Oyster Endpoints API?
Needs your own provider key (bring your own key)
