Quickstart
Get from zero to your first API calls in a sandbox tenant. If you don’t have one yet, request access.
Set the region and tenant once. Use uk for a UK tenant or au for an Australian tenant.
export EFIMIS_REGION=ukexport EFIMIS_TENANT=your-tenant-aliasexport EFIMIS_CURRENCY=GBP # Use AUD for an Australian tenant where applicable.export EFIMIS_API_BASE="https://api.${EFIMIS_REGION}.efimis.com/${EFIMIS_TENANT}/api/v1"Step 1 · Authenticate
Section titled “Step 1 · Authenticate”Exchange your client credentials for a bearer token. See Authentication for the full token request shape.
export EFIMIS_TOKEN="$(curl --fail-with-body -sS -X POST "$EFIMIS_AUTH_URL" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "client_id=$EFIMIS_CLIENT_ID" \ --data-urlencode "client_secret=$EFIMIS_CLIENT_SECRET" \ --data-urlencode "scope=$EFIMIS_API_SCOPE" \ | jq -er '.access_token')"Step 2 · Create a client
Section titled “Step 2 · Create a client”A client is an entity in the role of a client. First create the entity, then assign the client role.
# Create entityENTITY_ID=$(curl --fail-with-body -sS -X POST "$EFIMIS_API_BASE/entities" \ -H "Authorization: Bearer $EFIMIS_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"entityType\":\"Individual\",\"firstName\":\"Gordon\",\"lastName\":\"Smith\",\"currency\":\"$EFIMIS_CURRENCY\",\"email\":\"gordon.smith@example.com\"}" \ | jq -er .data.id)
# Assign client roleCLIENT_ID=$(curl --fail-with-body -sS -X POST "$EFIMIS_API_BASE/clients" \ -H "Authorization: Bearer $EFIMIS_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"entityId\":\"$ENTITY_ID\"}" \ | jq -er .data.id)Step 3 · Activate the client
Section titled “Step 3 · Activate the client”New clients must be activated before they can own matters.
curl --fail-with-body -sS -X POST "$EFIMIS_API_BASE/clients/$CLIENT_ID/activate" \ -H "Authorization: Bearer $EFIMIS_TOKEN"Step 4 · Open a matter
Section titled “Step 4 · Open a matter”Matters require a valid division from your tenant. Obtain a division ID from your firm configuration or the REST API reference.
export EFIMIS_DIVISION_ID="division_..."
MATTER_ID=$(curl --fail-with-body -sS -X POST "$EFIMIS_API_BASE/matters" \ -H "Authorization: Bearer $EFIMIS_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"clientId\":\"$CLIENT_ID\",\"divisionId\":\"$EFIMIS_DIVISION_ID\",\"title\":\"Smith v. Johnson\"}" \ | jq -er .data.id)
echo "Matter: $MATTER_ID"Step 5 · Post a work item
Section titled “Step 5 · Post a work item”Use an employee ID that belongs to your tenant. itemType: 0 is a timed-fee entry, and 36000000000 ticks is one hour.
export EFIMIS_EMPLOYEE_ID="employee_..."
curl --fail-with-body -sS -X POST "$EFIMIS_API_BASE/workitems" \ -H "Authorization: Bearer $EFIMIS_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"matterId\":\"$MATTER_ID\",\"employeeId\":\"$EFIMIS_EMPLOYEE_ID\",\"itemType\":0,\"entryDate\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",\"durationTicks\":36000000000,\"units\":1,\"rate\":{\"Amount\":250,\"Currency\":\"$EFIMIS_CURRENCY\"},\"title\":\"Initial matter review\"}"What’s next
Section titled “What’s next”- Subscribe to webhooks to receive real-time event notifications
- Read the API reference for all available resources
- Browse recipes for common integration patterns