apideck-php
Apideck Unified API integration patterns for PHP. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using PHP. Covers the apideck-libraries/sdk-php Composer package, authentication, CRUD operations, pagination, error handling, and Vault connection management.
Best use case
apideck-php is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Apideck Unified API integration patterns for PHP. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using PHP. Covers the apideck-libraries/sdk-php Composer package, authentication, CRUD operations, pagination, error handling, and Vault connection management.
Teams using apideck-php should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/apideck-php/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How apideck-php Compares
| Feature / Agent | apideck-php | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Apideck Unified API integration patterns for PHP. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using PHP. Covers the apideck-libraries/sdk-php Composer package, authentication, CRUD operations, pagination, error handling, and Vault connection management.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Apideck PHP SDK Skill
## Overview
The [Apideck Unified API](https://apideck.com) provides a single integration layer to connect with 200+ third-party services across accounting, CRM, HRIS, file storage, ATS, e-commerce, and more. The official PHP SDK provides typed clients for all unified APIs.
## Installation
```sh
composer require apideck-libraries/sdk-php
```
## IMPORTANT RULES
- ALWAYS use the `apideck-libraries/sdk-php` Composer package. DO NOT make raw `Guzzle`/`curl` calls to the Apideck API.
- ALWAYS pass security, app ID, and consumer ID via the builder when creating the client.
- USE `serviceId` on requests to specify which downstream connector to use.
- ALWAYS handle errors with try/catch using `Errors\APIException` as the base class.
- DO NOT store API keys in source code. Use environment variables.
## Quick Start
```php
<?php
use Apideck\Unify;
use Apideck\Unify\Models\Operations;
use Apideck\Unify\Models\Components;
$sdk = Unify\Apideck::builder()
->setConsumerId('your-consumer-id')
->setAppId('your-app-id')
->setSecurity(getenv('APIDECK_API_KEY'))
->build();
$request = new Operations\CrmContactsAllRequest(
serviceId: 'salesforce',
limit: 20,
);
$responses = $sdk->crm->contacts->list(request: $request);
foreach ($responses as $response) {
if ($response->httpMeta->response->getStatusCode() === 200) {
foreach ($response->getContactsResponse->data as $contact) {
echo $contact->name . "\n";
}
}
}
```
## SDK Patterns
### Client Setup
```php
use Apideck\Unify;
$sdk = Unify\Apideck::builder()
->setConsumerId('your-consumer-id')
->setAppId('your-app-id')
->setSecurity(getenv('APIDECK_API_KEY'))
->build();
```
### CRUD Operations
All resources follow the pattern: `$sdk->{api}->{resource}->{operation}(request: $request)`.
```php
use Apideck\Unify\Models\Operations;
use Apideck\Unify\Models\Components;
// LIST
$request = new Operations\CrmContactsAllRequest(
serviceId: 'salesforce',
limit: 20,
filter: new Components\ContactsFilter(email: 'john@example.com'),
sort: new Components\ContactsSort(
by: Components\ContactsSortBy::UpdatedAt,
direction: Components\SortDirection::Desc,
),
);
$responses = $sdk->crm->contacts->list(request: $request);
// CREATE
$request = new Operations\CrmContactsAddRequest(
serviceId: 'salesforce',
contact: new Components\ContactInput(
firstName: 'John',
lastName: 'Doe',
emails: [
new Components\Email(email: 'john@example.com', type: Components\EmailType::Primary),
],
phoneNumbers: [
new Components\PhoneNumber(number: '+1234567890', type: Components\PhoneNumberType::Mobile),
],
),
);
$response = $sdk->crm->contacts->create(request: $request);
// GET
$request = new Operations\CrmContactsOneRequest(
id: 'contact_123',
serviceId: 'salesforce',
);
$response = $sdk->crm->contacts->get(request: $request);
// UPDATE
$request = new Operations\CrmContactsUpdateRequest(
id: 'contact_123',
serviceId: 'salesforce',
contact: new Components\ContactInput(firstName: 'Jane'),
);
$response = $sdk->crm->contacts->update(request: $request);
// DELETE
$request = new Operations\CrmContactsDeleteRequest(
id: 'contact_123',
serviceId: 'salesforce',
);
$response = $sdk->crm->contacts->delete(request: $request);
```
### Pagination
The `list` method returns a PHP Generator. Iterate with `foreach`:
```php
$request = new Operations\AccountingInvoicesAllRequest(
serviceId: 'quickbooks',
limit: 50,
);
$responses = $sdk->accounting->invoices->list(request: $request);
foreach ($responses as $response) {
if ($response->httpMeta->response->getStatusCode() === 200) {
foreach ($response->getInvoicesResponse->data as $invoice) {
echo "{$invoice->number}: {$invoice->total}\n";
}
}
}
```
### Error Handling
```php
use Apideck\Unify\Models\Errors;
try {
$responses = $sdk->crm->contacts->list(request: $request);
foreach ($responses as $response) {
// handle response
}
} catch (Errors\BadRequestResponseThrowable $e) {
echo "Bad request: " . $e->getMessage() . "\n";
} catch (Errors\UnauthorizedResponseThrowable $e) {
echo "Unauthorized\n";
} catch (Errors\NotFoundResponseThrowable $e) {
echo "Not found\n";
} catch (Errors\PaymentRequiredResponseThrowable $e) {
echo "API limit reached\n";
} catch (Errors\UnprocessableResponseThrowable $e) {
echo "Validation error: " . $e->getMessage() . "\n";
} catch (Errors\APIException $e) {
echo "API error: " . $e->getMessage() . "\n";
}
```
### Retry Configuration
```php
use Apideck\Unify\Utils\Retry;
// Global
$sdk = Unify\Apideck::builder()
->setRetryConfig(
new Retry\RetryConfigBackoff(
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
retryConnectionErrors: false,
)
)
->setConsumerId('your-consumer-id')
->setAppId('your-app-id')
->setSecurity(getenv('APIDECK_API_KEY'))
->build();
```
## API Namespaces
| Namespace | Resources |
|-----------|-----------|
| `$sdk->accounting->*` | invoices, bills, payments, customers, suppliers, ledgerAccounts, journalEntries, taxRates, creditNotes, purchaseOrders, balanceSheet, profitAndLoss, and more |
| `$sdk->crm->*` | contacts, companies, leads, opportunities, activities, notes, pipelines, users |
| `$sdk->hris->*` | employees, companies, departments, payrolls, timeOffRequests |
| `$sdk->fileStorage->*` | files, folders, drives, driveGroups, sharedLinks, uploadSessions |
| `$sdk->ats->*` | applicants, applications, jobs |
| `$sdk->vault->*` | connections, consumers, sessions, customMappings, logs |
| `$sdk->webhook->*` | webhooks, eventLogs |Related Skills
apideck-rest
Apideck Unified REST API reference for any language. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using direct HTTP calls. Covers authentication headers, CRUD operations, cursor-based pagination, filtering, sorting, error handling, rate limiting, pass-through parameters, and webhooks. Language-agnostic — works with curl, fetch, axios, httpx, or any HTTP client.
apideck-python
Apideck Unified API integration patterns for Python. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using Python. Covers the apideck-unify SDK, authentication, CRUD operations, pagination, filtering, async support, and Vault connection management.
apideck-java
Apideck Unified API integration patterns for Java. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using Java. Covers the com.apideck:unify Maven package, authentication, CRUD operations, pagination, async support, and Vault connection management.
apideck-go
Apideck Unified API integration patterns for Go. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using Go. Covers the github.com/apideck-libraries/sdk-go package, authentication, CRUD operations, pagination, error handling, and Vault connection management.
apideck-dotnet
Apideck Unified API integration patterns for C# and .NET. Use when building integrations with accounting software (QuickBooks, Xero, NetSuite), CRMs (Salesforce, HubSpot, Pipedrive), HRIS platforms (Workday, BambooHR), file storage (Google Drive, Dropbox, Box), ATS systems (Greenhouse, Lever), e-commerce, or any of Apideck's 200+ connectors using .NET. Covers the ApideckUnifySdk NuGet package, authentication, CRUD operations, pagination, error handling, and Vault connection management.
apideck-best-practices
Best practices for building Apideck integrations. Covers authentication patterns, pagination, error handling, connection management with Vault, webhook setup, and common pitfalls. Use when designing or reviewing any Apideck integration regardless of language.
bgo
Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.
moai-lang-r
R 4.4+ best practices with testthat 3.2, lintr 3.2, and data analysis patterns.
moai-lang-python
Python 3.13+ development specialist covering FastAPI, Django, async patterns, data science, testing with pytest, and modern Python features. Use when developing Python APIs, web applications, data pipelines, or writing tests.
moai-icons-vector
Vector icon libraries ecosystem guide covering 10+ major libraries with 200K+ icons, including React Icons (35K+), Lucide (1000+), Tabler Icons (5900+), Iconify (200K+), Heroicons, Phosphor, and Radix Icons with implementation patterns, decision trees, and best practices.
moai-foundation-trust
Complete TRUST 4 principles guide covering Test First, Readable, Unified, Secured. Validation methods, enterprise quality gates, metrics, and November 2025 standards. Enterprise v4.0 with 50+ software quality standards references.
moai-foundation-memory
Persistent memory across sessions using MCP Memory Server for user preferences, project context, and learned patterns