Connect your software to Fictix
Point your server's provider client at a generated company's Fictix URL, add its runtime API key, and send a supported provider request. Records and writes belong to that synthetic company. Fictix does not log in to your vendor account, send real messages, run ads, or move money through a bank.
1. Choose the environment and company
Public catalog snapshots observed on October 28, 2026 report 60 entries in both staging and production: 59 marked available/selectable and one FCI execute preview that is not selectable. All 60 report approximate fidelity. These are catalog reports, not proof that provider requests work or strict upstream API parity. The published first-request templates were tested in staging only. Use the first-request directory to check catalog status for each provider; workflow coverage lists the supported staging operations and limits.
To evaluate the expanded integrations, sign in at staging.fictix.ai, create or select a company, and choose the integrations your software needs. Onboarding, the connector picker, and the add-integration menu use the deployed catalog. Your organization's plan and the company's selected services still determine access.
Open the company's API page to select a provider and copy its API URL, key, and first request. The Connect to your builder panel also provides setup details. Keep the key and API origin in the same environment.
2. Choose a runtime key
Use a Company API key for one company. For one key across your current and
future companies, staging organization admins can use an
organization API key. Both authenticate
with X-API-Key; neither is a vendor OAuth token.
| Operation | Required runtime-key scopes |
|---|---|
| Native read, including a supported read sent with POST | read |
| Native create, update, or delete | write |
| Execute a read capability, including FCI | read, execute |
| Execute a capability that writes records | write, execute |
Choose the scopes needed by your app when issuing the key. The Console's
Full runtime organization-key setting includes read, write, and
execute. It does not include the separate ground_truth scope. Keys never
override plan entitlements or grant management access.
Keep credentials in your server's secret store. A browser app calls your own server, which attaches the key when calling Fictix. Use the existing browser-builder proxy guidance for browser apps.
3. Set the base URL
Copy the slug and key from the selected staging company:
export FICTIX_API_ORIGIN="https://api-staging.fictix.ai"
export FICTIX_PROJECT_SLUG="replace_with_company_slug"
export FICTIX_PROJECT_API_KEY="replace_with_company_key"
These examples use a company key. For an organization key, send
$FICTIX_ORGANIZATION_API_KEY in the same header and select a company by its
slug. The organization-key guide shows how to list your company IDs and slugs.
| URL | Purpose |
|---|---|
/api/v1/orgs/{slug} |
Company runtime base |
/api/v1/orgs/{slug}/native/{provider} |
Native provider base |
/api/v1/orgs/{slug}/execute |
Execute transport, including FCI |
For example, Stripe's provider base is
https://api-staging.fictix.ai/api/v1/orgs/{slug}/native/stripe.
Append v1/customers for its first read:
curl --fail-with-body -sS \
"$FICTIX_API_ORIGIN/api/v1/orgs/$FICTIX_PROJECT_SLUG/native/stripe/v1/customers" \
-H "X-API-Key: $FICTIX_PROJECT_API_KEY"
If an SDK adds its own /v1, /api, or service prefix, configure its server
URL so the resulting request matches the full path in the
first-request directory. Configure
its transport to send the Fictix header. An SDK that cannot change its host or
headers needs a custom transport or a direct HTTP client. Vendor login flows
and SDK defaults are not Fictix authentication.
4. Check discovery and the response
The catalog is public. Query the environment your server actually uses:
curl --fail-with-body -sS \
"$FICTIX_API_ORIGIN/api/v1/catalog/connector-capabilities"
Find your provider by id. Check status, ui_selectable, native_supported,
contract_surfaces, and limitations. FCI has an execute surface and no native
surface. A missing provider is unavailable in that environment. Relay Financial
has no implemented direct API contract and is not in the available catalog.
Provider responses retain their own envelopes, pagination, and content types:
- REST requests usually use JSON, but their list fields differ by provider.
- Linear and Monday use GraphQL over POST. Inspect the GraphQL
errorsfield. - Sage Intacct uses XML. Inspect every returned operation status.
-
Expensify uses a URL-encoded
requestJobDescriptionform field. CheckresponseCodeas well as the HTTP status. -
Execute responses can use HTTP 200 with
status: "error". Requirestatus: "success"before consumingoutputs.
Use the request bodies and media types in the first-request directory. A POST read does not become a write merely because of its HTTP method.
5. Use FCI through execute
Read the company's id from GET /api/v1/orgs/{slug}/info, the API page's
generated request, or the organization company directory. Put that company
project ID in the legacy org_id body field. The workspace organization ID
and the URL's company slug are different identifiers.
curl --fail-with-body -sS -X POST \
"$FICTIX_API_ORIGIN/api/v1/orgs/$FICTIX_PROJECT_SLUG/execute" \
-H "X-API-Key: $FICTIX_PROJECT_API_KEY" \
-H "Content-Type: application/json" \
--data-raw '{"org_id":"replace_with_company_project_id","user_id":"your-integration","turn_id":"replace_with_unique_request_id","capability_key":"fci.cash","args":{}}'
This key needs both read and execute. FCI returns derived financial
summaries and retains preview status. Confirm its capability is available for
your company; it is not selectable in the standard connector picker. There is
no /native/fci first request.
6. Make writes reproducible
Native writes should include a fresh Idempotency-Key per operation. Reuse it
only for a retry with the same request and payload. Execute requests use a
unique turn_id per operation; preserve it on retries. Follow the provider's
documented exception where its own idempotency field is supported.
Read the resulting object back to verify persistence. Use each provider's
pagination contract; canonical limit/offset is not a universal native API
pagination scheme. Unsupported operations return errors rather than extending
the vendor contract automatically.
If a call returns 401, check the environment, expiry, and revocation state of
the key. A 402 with feature_not_entitled means the organization lacks the
required plan feature; native integration APIs require native.genome, available
on Developer or higher. Creating a new key does not change plan access. Canonical
REST data can still be available on your existing plan. For 403, check the
key's company or organization and required scopes. For 400, 404, or 422, compare the exact
method, path, body, and content type with the documented workflow.
The Company API reference describes runtime routing and schemas. The provider guides supply the concrete vendor paths hidden behind its generic native route. Use the Partner API only for an approved external management integration.
