Access & Authentication

Every request to the Addepar API must be authenticated. The API supports two authentication methods, and which one you use determines how your integration accesses data, how permissions are scoped, and how credentials are managed over time.

Choosing your authentication method

FactorAPI Key (Basic Auth)OAuth 2.0
Use whenYour integration runs as a single service account within one firmYour application accesses data on behalf of multiple users or across multiple firms
Credential modelStatic key/secret pair tied to a specific userAccess token (240s) + refresh token, issued per user authorization
Permission scopeInherits the creating user's full data and tool permissionsScoped to specific OAuth scopes authorized by each user
Multi-firmOne key per firmSingle application authorized across multiple firms
RotationManual: create new key, update integration, delete old keyAutomatic: refresh token obtains new access tokens without user intervention
Setup effortMinutes (create key in Firm Admin)Hours (register application, implement authorization flow, handle token lifecycle)

Decision rule: If your integration serves a single firm with a dedicated service account, use API Key authentication. If your integration serves multiple users, multiple firms, or is distributed as a product, use OAuth.

API Key authentication (Basic Auth)

How it works

Addepar uses HTTP Basic Authentication. You create an API key in Firm Administration, receive a key/secret pair, and include the pair (base64-encoded) in every request header.

PropertyValue
ProtocolHTTPS only. HTTP requests are rejected.
Auth schemeHTTP Basic Authentication
Credential formatBase64(key_id:key_secret)
Required headersAuthorization, Addepar-Firm

Permission inheritance

The API key inherits the permissions of the user who created it. This is the critical design constraint: the key can access exactly what that user can access, nothing more.

Permission layerWhat it controlsWhere configured
API AccessWhether the user can create keys and make API calls at allFirm Administration > Users > Permissions > API Access
Tool PermissionsWhich operations are allowed (view, create, update, delete) across entity typesFirm Administration > Users > Permissions
Portfolio AccessWhich specific entities, groups, and portfolios the user can seeFirm Administration > Users > Portfolio Access

If a request returns 403 Forbidden, the issue is in one of these three layers. If a request returns 404 Not Found for a resource that exists, the user behind the key likely lacks Portfolio Access to that specific entity.

Setup

1. Grant API Access to the user:

  1. Navigate to Firm Administration > Users (under User Permissions).
  2. Select the user who will own the API key.
  3. Open the Permissions tab.
  4. Set API Access to "Create, edit, and delete."

2. Create the API key:

  1. Navigate to Firm Administration > Admin Tools > API Access Key.

API Access Key page

  1. Click the + button in the table header.
  2. Enter a description (use the integration name for traceability).
  3. Click Create.

Create API Key dialog

  1. Record the key and secret immediately. The secret is displayed only once.

Save API Key and Secret

3. Determine your firm subdomain and firm ID:

  • Your firm subdomain is in your Addepar login URL: https://{subdomain}.addepar.com
  • Your firm ID can be found in the application URL path when signed in, or by using the API URL generator in the Analysis Tool (Export > Generate API URL > addepar_firm= value).

Request format

GET and DELETE requests:

curl -X GET "https://{firm}.addepar.com/api/v1/entities/1234" \
  -H "Authorization: Basic {base64(key_id:key_secret)}" \
  -H "Addepar-Firm: 1" \
  -H "Accept: application/vnd.api+json"

POST and PATCH requests (include Content-Type):

curl -X POST "https://{firm}.addepar.com/api/v1/entities" \
  -H "Authorization: Basic {base64(key_id:key_secret)}" \
  -H "Addepar-Firm: 1" \
  -H "Content-Type: application/vnd.api+json" \
  -H "Accept: application/vnd.api+json" \
  -d '{
    "data": {
      "type": "entities",
      "attributes": {
        "currency_factor": "USD",
        "model_type": "PERSON_NODE",
        "original_name": "New entity"
      }
    }
  }'
HeaderWhen requiredValue
AuthorizationAlwaysBasic + space + base64-encoded key_id:key_secret
Addepar-FirmAlwaysYour numeric firm ID
Content-TypePOST and PATCHapplication/vnd.api+json
AcceptRecommended on all requestsapplication/vnd.api+json

Key management

PracticeWhy
One key per integrationIf a key is compromised, only that integration is affected. Revocation is surgical.
Dedicated service accountSeparates API access from a human user's account. The integration continues working if the person leaves the firm.
Store in a secrets vaultKeys grant full access to the user's data scope. Treat them as production credentials.
Review usage regularlyIn Firm Administration > API Access Key, "Display all access keys" shows last-used dates. Delete keys that have not been used in 90+ days.
Rotate on personnel changeWhen the key owner leaves the organization or changes roles, create a new key under a new owner and revoke the old one.

📘

Related

  • OAuth - Token-based authentication for multi-user and multi-firm applications
  • Rate Limiting - Request budget shared across all credentials at a firm
  • Response Codes - 401 vs 403 diagnostic and troubleshooting

What’s Next

Did this page help you?