For AI agents: the complete documentation index is at https://docs.routebase.dev/llms.txt. Every page is also available as Markdown by appending index.md to its URL or by sending Accept: text/markdown.
API Reference

7 endpoints

Run test suites from a pipeline and collect the result. These endpoints back the routebase CLI and the Routebase GitHub Action, and they are the ones a CI job calls directly.

Run a test suite and wait for the result

POST /api/cli/run

Executes a test suite and returns the outcome in one call, which is what a pipeline step needs. The response tells you whether everything passed, so a CI job can fail on allPassed alone. Pass a reportFormat to get the report inline instead of downloading it separately.

The call blocks until the run finishes. For a long suite, send progressRunId and poll the status endpoint instead of holding the connection open.

Parameters

Name In Type Required Description
Idempotency-Key header string no Makes a retry of this write safe. Send a new value of 1 to 255 characters for each logical request and the same value on every retry. A successful result is kept for 24 hours, and a retry within that time returns it with the Idempotency-Replayed header instead of running the request again.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Request body

Required.

Content type: application/json

Property Type Required Description
projectId string (uuid) yes Public id of the project.
suiteId string (uuid) yes Public id of the test suite to run.
environmentId string (uuid) null no
iterations integer (int32) null no
delayMs integer (int32) null no
onError OnErrorBehavior null no
reportFormat string null no
threads integer (int32) null no
authOverrideJson string null no

Responses

200 — The run completed. Check allPassed for the verdict.

Property Type Required Description
allPassed boolean yes Whether every test case passed across every iteration. Gate your build on this.
totalElapsedMs integer (int64) yes Total run time in milliseconds.
totalTests integer (int32) yes Number of test case executions.
passedTests integer (int32) yes Number that passed.
failedTests integer (int32) yes Number that failed or errored.
testRunId string (uuid) null no
iterations integer (int32) yes Number of iterations executed.
iterationResults IterationResult[] no Per-iteration breakdown, present only when more than one iteration ran.
report string null no
reportFormat string null no
reportContentType string null no

400 — The request was malformed or failed validation.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

409 — A request with this Idempotency-Key is still running, or its response was too large to keep. The code is IDEMPOTENCY_KEY_IN_PROGRESS or IDEMPOTENCY_RESPONSE_NOT_STORED, and in the second case the request is not run again.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

422 — This Idempotency-Key was already used with a different request body, so use a new key. The code is IDEMPOTENCY_KEY_REUSED.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

List the test suites of a project for a CI pipeline

GET /api/cli/suites

Returns the test suites of a project so a pipeline can resolve a suite by name.

Parameters

Name In Type Required Description
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — A page of test suites.

Property Type Required Description
items TestSuite[] yes The test suites on this page.
totalCount integer (int32) yes Total number of suites, ignoring paging.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

List the environments of a project

GET /api/cli/environments

Returns the environments of a project, so a pipeline can pick the one whose variables the run should use. An environment marked isReadOnly rejects every write request sent to it, and the test cases concerned are reported as blocked rather than failed.

Parameters

Name In Type Required Description
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — The environments of the project.

Array of:

Property Type Required Description
id string (uuid) yes Public id of the environment.
name string yes Display name of the environment, such as Staging.
type EnvironmentType yes Which stage the environment stands for.
baseUrl string null no
createdAt string (date-time) yes When the environment was created, in UTC.
variableCount integer (int32) yes How many variables the environment defines for substitution.
freezesVersion boolean no A promotion into this environment makes the promoted version immutable.
isDocsSource boolean no What this environment pins is what the public documentation shows.
isMockSource boolean no What this environment pins is what the mock server serves.
isReadOnly boolean no Only GET, HEAD and OPTIONS may be sent here. Test cases that write are reported as blocked rather than run.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

Get the progress of a test run

GET /api/cli/runs/{id}/status

Returns how far a run has come, which lets a pipeline show progress instead of waiting silently. While the run is going, currentDurationMs counts up and completedAt stays null.

Parameters

Name In Type Required Description
id path string (uuid) yes Public id of the test run.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — The current status of the run.

Property Type Required Description
id string (uuid) yes Public id of the test run.
status string yes Current state of the run.
completedCases integer (int32) yes Test cases finished so far.
totalCases integer (int32) yes Test cases in the run.
passedCases integer (int32) yes Test cases that passed.
failedCases integer (int32) yes Test cases that failed.
currentDurationMs integer (int64) yes Elapsed time, which counts up while the run is going and is final once it ends.
startedAt string (date-time) yes When the run started.
completedAt string (date-time) null no

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

Download the report of a finished run

GET /api/cli/runs/{id}/report

Returns the run report as a file. JUnit XML is the default because GitHub Actions, Azure Pipelines and Jenkins all read it natively.

The run has to be finished. Asking for the report of a pending or running test run is answered with 409, so poll the status endpoint first.

Parameters

Name In Type Required Description
format query string no Report format. Defaults to junit.
id path string (uuid) yes Public id of the test run.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — The report file.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

409 — The run is still pending or running, so there is no report yet.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

List the test suites of a project

GET /api/projects/{projectId}/test-suites

The project scoped equivalent of /api/cli/suites, which returns the same page of suites. Use whichever fits the path style of your client.

Parameters

Name In Type Required Description
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Responses

200 — A page of test suites.

Property Type Required Description
items TestSuite[] yes The test suites on this page.
totalCount integer (int32) yes Total number of suites, ignoring paging.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

Execute a test suite

POST /api/projects/{projectId}/test-suites/{suiteId}/execute

Runs every test case in a suite in order, carrying extracted variables from one case into the next. This is the full result shape, so it also carries the per-case detail, the seed results and the performance metrics that /api/cli/run leaves out.

Set persistResults to false for a dry run that leaves no test run behind.

Parameters

Name In Type Required Description
Idempotency-Key header string no Makes a retry of this write safe. Send a new value of 1 to 255 characters for each logical request and the same value on every retry. A successful result is kept for 24 hours, and a retry within that time returns it with the Idempotency-Replayed header instead of running the request again.
suiteId path string (uuid) yes Public id of the test suite.
X-RB-Region header string no Region of your organization. US organizations must send us; EU organizations leave the header out. Without it a US call is routed to the EU region and answered with 401.

Request body

Content type: application/json

Property Type Required Description
environmentId string (uuid) null no
persistResults boolean null no
iterations integer (int32) null no
delayMs integer (int32) null no
onError OnErrorBehavior null no
dataSetId string (uuid) null no
threads integer (int32) null no
progressRunId string (uuid) null no
caseIds string (uuid)[] no Run only these test cases. Null or empty runs the whole suite.

Responses

200 — The run completed.

Property Type Required Description
results TestCaseExecutionResult[] yes One entry per test case execution, in run order.
extractedVariables object yes Variables extracted during the run and carried between cases.
allPassed boolean yes Whether every case passed.
totalElapsedMs integer (int64) yes Total run time in milliseconds.
testRunPublicId string (uuid) null no
iterations integer (int32) yes Number of iterations executed.
iterationResults IterationResult[] no Per-iteration breakdown, present only when more than one iteration ran.
dataSetName string null no
dataRowCount integer (int32) null no
threads integer (int32) yes Threads the run used.
performanceMetrics PerformanceMetrics null no
preRunSeedResult SeedExecutionResult null no
postRunSeedResult SeedExecutionResult null no
resetSnapshotResult SnapshotRestoreResult null no

400 — The request was malformed or failed validation.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

401 — The API key is missing, invalid, expired or revoked. A US organization calling

without X-RB-Region: us also lands here, because the request reached the wrong region.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

403 — The key is valid but lacks the permission or the project scope for this call.

A scoped key is also refused on organization level operations by design.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

404 — The resource does not exist, or it belongs to another organization or project.

Both cases answer the same way on purpose, so the API cannot be used to probe for foreign identifiers.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

409 — A request with this Idempotency-Key is still running, or its response was too large to keep. The code is IDEMPOTENCY_KEY_IN_PROGRESS or IDEMPOTENCY_RESPONSE_NOT_STORED, and in the second case the request is not run again.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

422 — This Idempotency-Key was already used with a different request body, so use a new key. The code is IDEMPOTENCY_KEY_REUSED.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.

429 — The rate limit was exceeded. The Retry-After header gives the seconds to wait.

Property Type Required Description
type string no A URI identifying the problem type.
title string no A short summary of the problem type.
status integer (int32) yes The HTTP status code.
detail string no A human readable explanation.
instance string no The path that produced the error.
code string no The stable machine readable error code, for example CONCURRENCY_CONFLICT, PROJECT_LOCKED, API_KEY_SCOPE_DENIED or NOT_A_MEMBER.