Skip to main content

Endpoint Configuration

Each endpoint in a connector requires specific configuration. This guide covers all endpoint settings.

Basic Settings

FieldDescriptionExample
pathAPI endpoint path/users/{user_id}/messages
methodHTTP methodGET, POST
friendlyNameHuman-readable name"List User Messages"
categoryLogical groupingusers, messages, files
descriptionWhat this endpoint collects"Retrieves all messages for a user"
orderExecution order (lower runs first)1, 2, 3
enabledWhether to include in collectionstrue/false

Path Templates

Use curly braces for dynamic path segments:

/repos/{owner}/{repo}/commits
/users/{user_id}/channels/{channel_id}/messages

Template values are populated from:

  1. Dependency mappings (from other endpoints)
  2. Reusable variables
  3. Collection parameters
  4. Credential metadata

Custom Headers

Add endpoint-specific headers that override connector defaults:

{
"headers": {
"Accept": "application/json",
"X-Custom-Header": "value"
}
}

These are per-endpoint overrides — they supplement or replace headers defined at the connector level.

Query Parameters

Add static query parameters:

{
"queryParams": {
"include_deleted": "true",
"types": "public_channel,private_channel"
}
}

Body Parameters

For POST, PUT, and PATCH endpoints, configure the request body:

Body Types

TypeDescription
noneNo request body
jsonJSON body (most common)
form-dataMultipart form data
urlencodedURL-encoded form
rawRaw text body

Configuring Body Content

  1. Select the endpoint
  2. Open the Config tab in the endpoint editor
  3. Choose body type (json, form-data, etc.)
  4. Enter the body content template (the JSON editor supports {param} placeholders for dependency values)

For JSON bodies, you can include dynamic values from dependency mappings:

{
"query": "search term",
"filter": {
"status": "active"
}
}

Body parameters can also be targets for dependency mappings — set targetParameterLocation to body when creating a mapping.

Recursion Configuration

For endpoints that traverse hierarchical data (e.g., file trees, nested pages), enable recursive collection:

When to Use

  • APIs with parent-child relationships (e.g., Notion blocks, file system folders)
  • Endpoints where calling with a parent ID returns children that may themselves have children

Configuration Fields

FieldDescriptionExample
ID PathJSON path to extract child IDs from the responseresults[*].id
URL ParameterWhich path parameter receives the child IDid in /blocks/{id}/children
Condition Path(Optional) Boolean field to filter which items to recurse intoresults[*].has_children
Condition ValueWhether to recurse when condition is true or falsetrue
Max DepthMaximum recursion depth (1–10, default 5)5

How It Works

  1. The endpoint is called normally (root call)
  2. Response is checked for child IDs using ID Path
  3. If Condition Path is set, only items matching the condition are recursed
  4. For each child ID, the same endpoint is called with the ID substituted into URL Parameter
  5. This repeats up to Max Depth levels

Testing Recursion

Use the Test button next to the ID Path field to preview extracted values from the current response. This shows how many child IDs would be found without actually making recursive calls.

Example: Notion Blocks

Endpoint: GET /blocks/{block_id}/children
ID Path: results[*].id
URL Parameter: block_id
Condition Path: results[*].has_children
Condition Value: true
Max Depth: 5

Flow:
1. GET /blocks/page-123/children → finds 3 child blocks
2. For children with has_children=true:
GET /blocks/child-1/children → finds 2 grandchildren
GET /blocks/child-2/children → finds 0 grandchildren
3. Continues until max depth or no more children

Conditional Execution

Endpoints can have execution conditions that determine whether they run based on runtime data. This is useful for skipping endpoints when their data source is empty or when certain conditions aren't met.

Condition Types

TypeDescription
Endpoint conditionCheck if a preceding endpoint returned data at a specific path
Variable conditionCheck the number of values in a variable

Logic Modes

  • All (AND): Every condition must pass for the endpoint to execute
  • Any (OR): At least one condition must pass

Live Evaluation

Conditions are evaluated against current test data and show per-condition pass/fail indicators, making it easy to verify your conditions work correctly before running a collection.

See Endpoint Conditions for the full guide.

Response Transformations

Apply a chain of post-processing transformations to endpoint responses before variable extraction. This is useful for normalizing nested API responses.

Available Transformations

OperationDescription
FlattenFlatten nested objects into a single level
RenameRename fields in the response
FilterFilter array items by condition
MapExtract specific fields from array items
PickKeep only specified top-level fields
OmitRemove specified top-level fields
CombineCombine multiple fields into one

Transformations are applied in order, and each step can be individually enabled or disabled. The editor shows a live preview comparing original vs transformed data.

See Response Transformations for the full guide.

Forensic Relevance

Mark endpoints as forensically relevant when they contain:

  • User activity data
  • Communication records
  • Access logs
  • File metadata
  • Timestamps and audit trails

Non-relevant endpoints (like configuration) can still be collected but may be deprioritized.

Rate Limiting

Override global rate limit for specific endpoints:

{
"rateLimit": {
"requests": 10,
"windowSeconds": 60
}
}

Use lower limits for:

  • Heavy endpoints
  • Endpoints with stricter platform limits
  • Endpoints that return large responses

Data Extraction

Configure how data is extracted from responses:

{
"dataExtraction": {
"path": "$.data.items",
"fileNaming": "users_{cursor}.json"
}
}

JSON Path

PathMatches
$Root object
$.dataProperty named "data"
$.items[*]All items in array
$.data.users[*].idAll user IDs

File Naming

Templates support:

  • {cursor} - Current cursor value
  • {page} - Current page number
  • {offset} - Current offset
  • {timestamp} - ISO timestamp
  • {endpoint_id} - Endpoint identifier
  • Any path parameter (e.g., {user_id})

Execution Order

The order field determines execution sequence:

order: 1  →  order: 2  →  order: 3
users.list channels.list messages.history

Endpoints with dependencies always wait for source endpoints regardless of order.

Enabling/Disabling

Toggle endpoints without deleting:

  • Enabled: Included in collections
  • Disabled: Skipped during collection

Reasons to disable:

  • Endpoint not needed for current use case
  • Platform deprecated the endpoint
  • Data not forensically relevant
  • Temporary issues with endpoint

Analyst Notes

Add notes for future reference:

  • Why endpoint was enabled/disabled
  • Platform-specific quirks
  • Configuration decisions
  • Known issues

Notes are visible to all analysts. Unacknowledged notes show an amber indicator in the Execution Order panel.

Best Practices

  1. Use descriptive names - "List Team Members" not "GET /teams/members"
  2. Group by category - Consistent categorization aids review
  3. Document decisions - Use notes for non-obvious choices
  4. Set appropriate order - Dependencies should run first
  5. Configure rate limits - Respect platform limits
  6. Use conditions - Skip endpoints when their prerequisites aren't met
  7. Use transformations - Normalize responses before extraction when APIs return inconsistent structures

Next Steps