# Call It (/docs/tracks/api)



Ductor is API-first and headless: everything the product does is reachable
over one surface, served as both REST/JSON and Connect-RPC from the same
Protocol Buffers definitions. This is the most complete track here.

<Cards>
  <Card title="API reference" href="/docs/api-reference">
    The practical tour — auth model, tenancy, resource groups, and the interactive reference.
  </Card>

  <Card title="Guides" href="/docs/guides">
    End-to-end walkthroughs: define a workflow, add a connector, route an event, issue a key.
  </Card>

  <Card title="Managing resources" href="/docs/management">
    Provision and operate tenants, pools, rules, workflows, experiments, and connections.
  </Card>

  <Card title="API surface" href="/docs/reference/api-surface">
    The transport contract — protocol planes, interceptors, versioning, pagination, rate limits.
  </Card>
</Cards>

## Start with a working request [#start-with-a-working-request]

<Cards>
  <Card title="Issue & use API keys" href="/docs/guides/api-keys">
    Mint a tenant key, scope it with roles and environments, and authenticate with it.
  </Card>

  <Card title="Define & publish a workflow" href="/docs/guides/define-workflow">
    Author a DAG in YAML, validate it offline, publish a version, then trigger it.
  </Card>

  <Card title="Routing rules & strategies" href="/docs/guides/routing-rules-strategies">
    Create pools, write CEL rules, and pick a selection strategy.
  </Card>

  <Card title="Errors & status codes" href="/docs/reference/errors">
    Domain sentinels mapped to Connect/gRPC codes, HTTP status, and Problem JSON.
  </Card>
</Cards>

## Neighbouring tracks [#neighbouring-tracks]

Authoring the same routes visually is [Click it](/docs/tracks/nocode).
Defining workflows in your own codebase instead of over the API is
[Extend it](/docs/tracks/code).
