/api/v1 on each product’s host. It’s the same API the AgentHub and ModelHub web apps call, plus a small set of endpoints meant for your own code: trace ingestion and OpenTelemetry export.
Base URLs
Every path in this reference is relative to the base URL. For example, trace ingestion is:
Which endpoints you can call from your code
The endpoints fall into two groups that authenticate differently. Authentication has the details.
The app endpoints are documented so you can see what the product does and what each permission unlocks. They require a browser session cookie, and there are no personal API tokens to call them from a script. If you need to automate something beyond ingestion, talk to your CorePillar contact.
There’s no CorePillar SDK package. Use any HTTP client for the ingest endpoint, or any standard OpenTelemetry exporter for the OTLP endpoint. See the Tracing quickstart.
Response envelope
Most endpoints return JSON in one of two shapes. Success:dataholds the result: an object or an array.metais present only on endpoints that page or count results.
codeis a stableSCREAMING_SNAKE_CASEidentifier. Branch oncode, never onmessage.messageis a human-readable sentence that may change.detailsis an object with extra context. It’s often empty ({}).
Exceptions to the envelope
A few endpoints answer in a different shape because a client outside AgentHub dictates it:Pagination
Most list endpoints return the full list in one response. The exceptions:
Traces are ordered newest first by
started_at. The cursor marks a started_at boundary, so if several traces share exactly the same started_at as the last item on a page, some of them can be skipped by the next page.
Content types
- Send request bodies as
application/jsonunless an endpoint says otherwise. The synthetic-data endpoints reject other content types with415. POST /chat/attachmentstakesmultipart/form-datawith the file in afilefield.- The OTLP endpoints take
application/x-protobuforapplication/json, optionallygzipordeflatecompressed. - Timestamps are ISO 8601 strings in UTC. The ingest endpoint requires a trailing
Z. - IDs for organizations, projects, evaluators, collections, runs and keys are UUIDs. A trace’s
trace_idis your own string.
Status codes
Versioning
The version is part of the path (/api/v1). There’s no version header. Within v1, fields may be added to responses, so ignore fields you don’t recognize. There is no v2 today.
Rate limits
Only one endpoint is rate limited by AgentHub itself:POST /auth/sso-discovery, at 30 requests per minute per client IP. Everything else, including ingestion, has no per-key rate limit today. Long-running streaming endpoints can run for up to 800 seconds.