Get Started

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

You will finish by reading a page of invoices from the accounting account you connected. Evaluating Apideck? Start a free trial and use the POC checklist to compare the same workflow with an in-house integration or another provider.

Step 1: Create an account

Create your free trial account, then create an application in the Apideck dashboard. Apideck offers a 30-day free trial; see current trial and plan terms. 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 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.

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 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.

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.

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.

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.

One customer. Their connected accounts.Example setup

Apideck Vault

Your customer authorizes their accounts.

Embedded UI or hosted session

Acme, your customer

consumer_id: acme

QuickBooks Online

service_id: quickbooks

Xero

service_id: xero

Separate credentials for each connection

Your backendUnified APISelected connection

Each request identifies the consumer and the service to use.

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 dashboard also offers a demo, but a demo connection may belong to a different consumer.

Open data.session_uri from step 4. 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 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.

First API call

Choose cURL, TypeScript, or Python in the first-call workspace 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 first.

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

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.
  • {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.

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 to inspect the request and response; use the error reference 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:

Building with another API? The same authentication pattern applies. Choose a resource from the Unified API catalog.

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 capabilityIntroduce it whenDone when
Build an invoice workflowYou need customers, invoices, and payment allocationsA read-back confirms the intended customer, totals, and balance
Read subsequent pagesThe response includes a next cursorYou process every page and stop when no next cursor remains
Recover from a failed requestA call fails or a write outcome is uncertainYou identify the cause and check the outcome before retrying a write
React to changesYour product needs ongoing updatesA verified event is persisted, acknowledged, and reconciled without duplicate processing
Handle connector-specific needsThe unified fields do not cover your requirementCoverage and a test response confirm the connector behavior you rely on

The first-call workspace 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 and use-case guide.
  2. Connect and read. Follow the setup above, then use 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, 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.

CompareEvidence to record
Time to first correct resultHands-on engineering time, setup steps, and external waiting time
Workflow coverageRequired operations and fields that work on each selected connector
Data correctnessExpected versus observed IDs, counts, amounts, dates, and pagination completion
Recovery effortFailure, diagnosis, correction, and verified outcome; any manual intervention
Adding another connectorCode changes, new setup work, and connector-specific exceptions
Production fitExpected usage and plan costs, operational ownership, and data-handling requirements

If an agent is part of your product, include a verified MCP task: 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 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 in your product or review the authorization guide 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 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 or configure webhooks in Apideck.

SDKs

Our SDKs are the easiest way to integrate our API into your codebase. Find out how to get started with it here.

Choose from TypeScript, Python, PHP, .NET, Java, and Go on the SDKs page.

AI & LLM Tools

Building with an AI coding agent? We offer API Skills that teach LLMs how to use the Apideck SDKs โ€” including methods, authentication patterns, and best practices. Install skills for your language with:

npx skills add apideck-libraries/api-skills

We also serve plain-text documentation so AI tools get clean, parseable content. See the full Building with LLMs guide for IDE plugins, slash commands, and more.

API Tools

Use the Apideck API Explorer to send a request and inspect its response before writing code. Follow the API Explorer guide for credentials, connector selection, a first invoice read, and troubleshooting.

We also offer integrations with Postman and Insomnia. Follow the Postman and Insomnia setup instructions to import an OpenAPI specification.

The OpenAPI specifications for all of our APIs are open source.

Review Zero Data Retention 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. All of our samples are completely open source.