# Get Started

This guide will get you up and running with Apideck. To get started on our platform, you need to:

- [Create an account](#step-1-create-an-account)
- [Enable Unified APIs and connectors](#step-2-enable-unified-apis-and-connectors)
- [Get your API key](#step-3-get-your-api-key)
- [Create a consumer](#step-4-create-a-consumer)
- [Connect integrations in Vault](#step-5-connect-integrations-in-vault)

You will finish by reading a page of invoices from the accounting account you connected. Evaluating Apideck? [Start a free trial](https://www.apideck.com/signup?products=unify&source=docs-get-started) and use the [POC checklist](#evaluate-apideck-with-a-proof-of-concept) to compare the same workflow with an in-house integration or another provider.

## Step 1: Create an account

[Create your free trial account](https://www.apideck.com/signup?products=unify&source=docs-get-started), then create an application in the Apideck dashboard. Apideck offers a 30-day free trial; see [current trial and plan terms](https://www.apideck.com/pricing). You will also need access to a test account in the software you want to connect. Connector setup requirements still apply.

## Step 2: Enable Unified APIs and connectors

Go to the [Configuration](https://platform.apideck.com/configuration) page in the Apideck dashboard. For this walkthrough, enable the **Accounting API**. You'll see a list of the available connectors for each Unified API. Choose one accounting connector for a test company, such as QuickBooks Online or Xero. The Unified APIs and connectors you select become available to your users in [Vault](https://developers.apideck.com/apis/vault/reference).

### OAuth Apps

Authentication requirements depend on the connector. Some OAuth connectors provide an Apideck sandbox app for testing; others require your own OAuth app or credentials. Check the setup guide for the connector you enable before connecting an account.

## Step 3: Get your API key

Go to the [API Keys](https://platform.apideck.com/configuration/api-keys) page in the Apideck dashboard. Copy your App ID and API key.
If your API key ever gets compromised, you can regenerate it on this page.

## Step 4: Create a consumer

Apideck supports creating multiple consumers per application. **Vault** lets your users (**consumers** in Apideck) easily connect and configure integrations. You can create a consumer through a [Vault session](https://developers.apideck.com/apis/vault/reference#tag/Sessions).

Consumers need to have a **unique ID**. You can freely choose a consumer ID yourself. Most of the time, this is an ID of your internal data model that represents a user or account in your system (for example `account:12345`). If the consumer doesn't exist yet, Vault will upsert a consumer based on your ID.

> **Note 🚨**
>
> Session creation should always happen server-side to prevent token leakage.

Replace `{API_KEY}`, `{APP_ID}`, and `{CONSUMER_ID}` in the request below. Choose a test consumer ID, such as `account:12345`, and use that same ID throughout this guide. The response contains `data.session_uri` for Hosted Vault and `data.session_token` for embedded Vault. Open the returned session URI to connect the account for this consumer.

```sh
curl --request POST \
  --url 'https://unify.apideck.com/vault/sessions' \
  --header 'Authorization: Bearer {API_KEY}' \
  --header 'x-apideck-app-id: {APP_ID}' \
  --header 'x-apideck-consumer-id: {CONSUMER_ID}' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'
```

## Step 5: Connect integrations in Vault

**Apideck Vault** lets your users connect their integration accounts. It stores the credentials securely and lets you make authorized API calls on your users' behalf (consumers in Apideck).

Vault connections hold the credentials for a given connector (for example QuickBooks Online or Xero). A connection is always scoped to a consumer.

Each customer has a consumer ID. Vault stores separate credentials for each of their connections. Your backend calls the Unified API with `x-apideck-consumer-id` and `x-apideck-service-id` to select the customer and connected service.

For this guide, use **Hosted Vault** with the session URI returned in step 4. The [Vault](https://platform.apideck.com/vault) dashboard also offers a demo, but a demo connection may belong to a different consumer.

Open `data.session_uri` from [step 4](#step-4-create-a-consumer). If the session has expired, create another session for the same consumer ID.

Go to the **Integrations** page in Hosted Vault. Search for a connector that you enabled in [step 2](#step-2-enable-unified-apis-and-connectors) and click **Add**.

On the integration's page click **Authorize**, you will be redirected to the connector and asked to authorize Apideck. After you complete this flow, you will be redirected back to Hosted Vault.

Complete any required connection settings before making your first API call.

>
>
> Depending on the connector, you might need to complete some settings for a connection to be callable. This will be indicated in
> Hosted Vault with a "Needs configuration" badge. Fill in the settings and hit save.
>

## First API call

Choose cURL, TypeScript, or Python in the [first-call workspace](/first-api-call) for runnable examples and result checks.

You now have all the building blocks to make your first call. For an ERP or accounting integration, enable the **Accounting API**, authorize a connector in Vault, and read a page of invoices. Check that your connector supports [listing invoices](/apis/accounting/coverage) first.

This request reads existing data; it does not create an invoice or move money.

```sh
curl --request GET \
  --url 'https://unify.apideck.com/accounting/invoices?limit=10' \
  --header 'Authorization: Bearer {API_KEY}' \
  --header 'x-apideck-app-id: {APP_ID}' \
  --header 'x-apideck-consumer-id: {CONSUMER_ID}' \
  --header 'x-apideck-service-id: {SERVICE_ID}'
```

- `{APP_ID}` and `{API_KEY}` are the values you copied in step 3.
- `{SERVICE_ID}` is the ID of the accounting connector you authorized (for example `quickbooks` or `xero`). Find your connector in the [Accounting connector catalog](/apis/accounting).
- `{CONSUMER_ID}` must be the same ID you used to create the Vault session in step 4. Keep one stable consumer ID per customer or tenant; a connection authorized for one consumer is not available to another.

> **Note 🚨**
>
> API calls to Apideck APIs should always happen server-side to prevent token leakage.

### Verify the result and choose your workflow

A successful response contains a `data` array. An empty array can be valid if the connected company has no invoices. Check the [request logs](/logs) to inspect the request and response; use the [error reference](/errors) if the request fails. Confirm that your App ID, consumer ID, and connector ID match the connection you authorized.

Next, follow the workflow for your product:

- [Automate accounts payable](/guides/accounts-payable-automation): suppliers, bills, and bill payments.
- [Sync invoices and payments](/guides/accounts-receivable-automation): customers, invoices, and payment allocations.
- [Build expense integrations](/guides/expense-management-integration): ledger mappings and approved spend.
- [Power financial reporting](/guides/fpa-with-accounting-api): actuals, forecasts, and variance reporting.
- [Explore all accounting use cases and demos](/use-cases).

Building with another API? The same authentication pattern applies. Choose a resource from the [Unified API catalog](/apis).

## Extend your working integration

Keep the same App ID, consumer ID, and connector from your first read. Do not create a new consumer for each tutorial. Store credentials and customer identifiers locally; they do not belong in shared documentation URLs.

| Next capability | Introduce it when | Done when |
| --- | --- | --- |
| [Build an invoice workflow](/guides/accounts-receivable-automation) | You need customers, invoices, and payment allocations | A read-back confirms the intended customer, totals, and balance |
| [Read subsequent pages](/guides/syncing-accounting-data-at-scale) | The response includes a next cursor | You process every page and stop when no next cursor remains |
| [Recover from a failed request](/logs) | A call fails or a write outcome is uncertain | You identify the cause and check the outcome before retrying a write |
| [React to changes](/guides/webhooks) | Your product needs ongoing updates | A verified event is persisted, acknowledged, and reconciled without duplicate processing |
| [Handle connector-specific needs](/guides/field-mapping) | The unified fields do not cover your requirement | Coverage and a test response confirm the connector behavior you rely on |

The [first-call workspace](/first-api-call) keeps your chosen connector and workflow in its next-step links. A successful invoice read verifies that connection and operation, not every resource in the API.

## Evaluate Apideck with a proof of concept

Put Apideck through your actual integration requirement before choosing how to build. Start with one workflow, one test company, and a small dataset whose expected result you already know. Use the same requirements and source records to compare Apideck, a direct in-house integration, and any other provider.

1. **Define the result.** For example: import every invoice with its customer, currency, balance, and source ID. For CRM, HRIS, or Ecommerce, select the matching [first-call example](/first-api-call) and [use-case guide](/use-cases).
2. **Connect and read.** Follow the setup above, then use [API Explorer](/guides/api-explorer) or your preferred SDK. Record hands-on setup time separately from waiting for credentials or an administrator's approval.
3. **Verify the workflow.** Check required operations and fields against [connector coverage](/apis/coverage), inspect real responses, and read every page. Compare IDs, counts, and values with the source account; a successful empty response is not proof of a complete import.
4. **Exercise recovery.** Test a missing permission or disconnected test account, follow the error to its cause, and verify recovery. If your workflow writes data, use a disposable record, verify the result, and reconcile uncertain outcomes before retrying.
5. **Try a second connector.** Reuse your application code and record the changes needed for authorization, fields, and provider-specific behavior. This tests the part of a unified API that a single-connector demo cannot show.

Use this scorecard for each approach. Fill it with measured results and links to sanitized evidence, including gaps and unresolved requirements.

| Compare | Evidence to record |
| --- | --- |
| Time to first correct result | Hands-on engineering time, setup steps, and external waiting time |
| Workflow coverage | Required operations and fields that work on each selected connector |
| Data correctness | Expected versus observed IDs, counts, amounts, dates, and pagination completion |
| Recovery effort | Failure, diagnosis, correction, and verified outcome; any manual intervention |
| Adding another connector | Code changes, new setup work, and connector-specific exceptions |
| Production fit | Expected usage and plan costs, operational ownership, and [data-handling requirements](/guides/security-and-data-handling) |

If an agent is part of your product, include a [verified MCP task](/guides/mcp-verification-and-recovery): discover the right operation, complete an approved bounded read, and check the result. Keep simulated playground results separate from executed requests. Copying a prompt or connecting a server is not a completed task.

A useful POC ends with a decision: the workflow meets your acceptance criteria, needs a documented workaround, or has a blocking gap. [Share your requirements with our team](https://www.apideck.com/contact) if you need help evaluating a connector or resolving a blocker.

## Adapt onboarding for your product

You used Hosted Vault for the first connection. Once that works, [embed Vault](/guides/vault) in your product or review the [authorization guide](/guides/authorize-connections) for advanced connection management. These choices reuse the same consumer and connection model.

Configure optional `consumer_metadata` and Vault `theme` fields when you need customer labels and branding. They are not required for the first session. See the [Vault session reference](/apis/vault/reference/sessions#sessionsCreate) for available options.

### Custom OAuth apps

Once you're ready to ship your integrations with Apideck, you should use your own OAuth apps. Apideck supports bringing your own OAuth clients for supported services by configuring them in our dashboard. This will make sure users see **your brand** instead of Apideck when they connect integrations.

## Extras

### Get notified when your users connect integrations

We offer **Webhook** support so you can get notified as soon as a consumer configures a connection. You can find more information about Webhooks in the [Webhook API docs](https://developers.apideck.com/apis/webhook/reference) or [configure webhooks](https://platform.apideck.com/webhooks) in Apideck.

### SDKs

Our [SDKs](/sdks) are the easiest way to integrate our API into your codebase. Find out how to get started with it [here](/sdks).

Choose from TypeScript, Python, PHP, .NET, Java, and Go on the [SDKs page](/sdks).

### AI & LLM Tools

Building with an AI coding agent? We offer [API Skills](/building-with-llms) that teach LLMs how to use the Apideck SDKs — including methods, authentication patterns, and best practices. Install skills for your language with:

```sh
npx skills add apideck-libraries/api-skills
```

We also serve [plain-text documentation](/building-with-llms#plain-text-docs) so AI tools get clean, parseable content. See the full [Building with LLMs](/building-with-llms) guide for IDE plugins, slash commands, and more.

### API Tools

Use the [Apideck API Explorer](/api-explorer) to send a request and inspect its response before writing code. Follow the [API Explorer guide](/guides/api-explorer) for credentials, connector selection, a first invoice read, and troubleshooting.

> **Tip 💡**
>
>
> From the [Apideck dashboard](https://platform.apideck.com), you can open the API Explorer with temporary credentials prefilled. Use the links in the sidebar.
>

We also offer integrations with [Postman](https://www.postman.com/) and [Insomnia](https://insomnia.rest). Follow the [Postman and Insomnia setup instructions](/guides/api-explorer#use-postman-or-insomnia) to import an OpenAPI specification.

The [OpenAPI specifications](https://github.com/apideck-libraries/openapi-specs) for all of our APIs are open source.

Review [Zero Data Retention](/guides/security-and-data-handling#zero-data-retention-and-its-boundaries) when planning data handling, including the boundaries for Vault credentials, optional logs and on-premises connectors.

### Samples

Looking for inspiration? Take a look at our [sample projects](/samples). All of our samples are completely open source.
