Continuous Integration — entry 004 of 5

CircleCI

Verified Jul 2026

CircleCI's REST API triggers and inspects pipelines, workflows, and jobs, and manages projects, contexts, and self-hosted runners. The stored v1-reference docs URL now 404s live — CircleCI has fully moved API documentation to v2, whose own v1 docs page carries a banner recommending migration to v2 endpoints — so the URL was corrected to the current v2 reference. Authentication is reconfirmed as a personal API token: an unauthenticated GET to api/v2/me returned 401, and that same response (plus its OPTIONS preflight) carried no access-control-allow-origin header at all despite a Vary: Origin header, resolving CORS to closed rather than open. CircleCI's pricing page offers a Free plan (30,000 monthly credits, more for open source) alongside paid Performance plans, making it freemium.

ci-cddevopsautomationpipelinesbuild-automation
AuthenticationAPI KeySign up with the provider to obtain credentials.
HTTPSSupportedTraffic is encrypted in transit.
CORSDisabledBrowser calls need a server-side proxy.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score81out of 100
Authentication15/25API key required
Pricing17/20Freemium tier available
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 81 on greatapis.com
<a href="https://greatapis.com/api/circleci/"><img src="https://greatapis.com/badge/circleci.svg" alt="Scored 81 on greatapis.com"></a>

Auth quickstart

  1. Sign up with the provider to get an API key.
  2. Send it on every request as a headerAuthorization: <key>
  3. The exact header isn't documented — Authorization is a common default; confirm in the provider's docs.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://circleci.com/api/v2
Auth
api_key_headerbearer_authbasic_authapi_key_query
Context10

Endpoints relating to [contexts](https://circleci.com/docs/contexts/). Use contexts to secure and share environment variables.

GET/contextList contexts
Responses
StatusDescriptionSchema
200A paginated list of contextscontext_list
401
404
429
500
POST/contextCreate a new context
Request body

application/jsoncontext_created

Responses
StatusDescriptionSchema
200The new context
401
404
429
500
GET/context/{context_id}Get a context
Responses
StatusDescriptionSchema
200The contextcontext
401
404
429
500
DELETE/context/{context_id}Delete a context
Responses
StatusDescriptionSchema
200A confirmation messagedelete_context_response
401
404
429
500
GET/context/{context_id}/environment-variableList environment variables
Responses
StatusDescriptionSchema
200A paginated list of environment variablesenv_var_list
401
404
429
500
PUT/context/{context_id}/environment-variable/{env_var_name}Add or update an environment variable
Request body

application/json

Responses
StatusDescriptionSchema
200The new environment variableupdate_env_var
401
404
429
500
DELETE/context/{context_id}/environment-variable/{env_var_name}Remove an environment variable
Responses
StatusDescriptionSchema
200A confirmation messagedelete_env_var
401
404
429
500
GET/context/{context_id}/restrictionsGet context restrictions
Responses
StatusDescriptionSchema
200Successful response.context_project_restrictions_list
400
401
404
429
500
POST/context/{context_id}/restrictionsCreate context restriction
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Successful response.restriction_created
400Bad request.
401
404
409Request conflict.
429
500
DELETE/context/{context_id}/restrictions/{restriction_id}Delete context restriction
Responses
StatusDescriptionSchema
200Successful response.restriction_deleted
400
401
404
429
500
Insights10

Endpoints relating to [Insights](https://circleci.com/docs/insights/). Use Insights to monitor credit and compute usage for your projects.

GET/insights/pages/{project-slug}/summaryGet summary metrics and trends for a project across it's workflows and branches
Parameters
NameInRequiredType
project-slugpathyesstring
reporting-windowquerynostring
branchesquerynoobject
workflow-namesquerynoobject
Responses
StatusDescriptionSchema
200Aggregated summary metrics and trends by workflow and branches
defaultError response.
GET/insights/time-series/{project-slug}/workflows/{workflow-name}/jobsJob timeseries data
Parameters
NameInRequiredType
project-slugpathyesstring
workflow-namepathyesstring
branchquerynostring
granularityquerynostring
start-datequerynostring
end-datequerynostring
Responses
StatusDescriptionSchema
200An array of timeseries data, one entry per job.
defaultError response.
GET/insights/{org-slug}/summaryGet summary metrics with trends for the entire org, and for each project.
Parameters
NameInRequiredType
org-slugpathyesstring
reporting-windowquerynostring
project-namesquerynoobject
Responses
StatusDescriptionSchema
200summary metrics with trends for an entire org and it's projects.
defaultError response.
GET/insights/{project-slug}/branchesGet all branches for a project
Parameters
NameInRequiredType
project-slugpathyesstring
workflow-namequerynostring
Responses
StatusDescriptionSchema
200A list of branches for a project
defaultError response.
GET/insights/{project-slug}/flaky-testsGet flaky tests for a project
Parameters
NameInRequiredType
project-slugpathyesstring
Responses
StatusDescriptionSchema
200A list of flaky tests for a project
defaultError response.
GET/insights/{project-slug}/workflowsGet summary metrics for a project's workflows
Parameters
NameInRequiredType
project-slugpathyesstring
page-tokenquerynostring
all-branchesquerynoboolean
branchquerynostring
reporting-windowquerynostring
Responses
StatusDescriptionSchema
200A paginated list of summary metrics by workflow
defaultError response.
GET/insights/{project-slug}/workflows/{workflow-name}Get recent runs of a workflow
Parameters
NameInRequiredType
project-slugpathyesstring
workflow-namepathyesstring
all-branchesquerynoboolean
branchquerynostring
page-tokenquerynostring
start-datequerynostring
end-datequerynostring
Responses
StatusDescriptionSchema
200A paginated list of recent workflow runs
defaultError response.
GET/insights/{project-slug}/workflows/{workflow-name}/jobsGet summary metrics for a project workflow's jobs.
Parameters
NameInRequiredType
project-slugpathyesstring
workflow-namepathyesstring
page-tokenquerynostring
all-branchesquerynoboolean
branchquerynostring
reporting-windowquerynostring
job-namequerynostring
Responses
StatusDescriptionSchema
200A paginated list of summary metrics by workflow job.
defaultError response.
GET/insights/{project-slug}/workflows/{workflow-name}/summaryGet metrics and trends for workflows
Parameters
NameInRequiredType
project-slugpathyesstring
workflow-namepathyesstring
all-branchesquerynoboolean
branchquerynostring
Responses
StatusDescriptionSchema
200Metrics and trends for a workflow
defaultError response.
GET/insights/{project-slug}/workflows/{workflow-name}/test-metricsGet test metrics for a project's workflows
Parameters
NameInRequiredType
project-slugpathyesstring
workflow-namepathyesstring
branchquerynostring
all-branchesquerynoboolean
Responses
StatusDescriptionSchema
200A list of test metrics by workflow
defaultError response.
User3

A set of endpoints you can use to get information about a specific user.

GET/meUser Information
Responses
StatusDescriptionSchema
200User login information.
defaultError response.
GET/me/collaborationsCollaborations
Responses
StatusDescriptionSchema
200Collaborations
defaultError response.
GET/user/{id}User Information
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200User login information.
defaultError response.
Pipeline11

Endpoints relating to [pipelines](https://circleci.com/docs/pipelines/). Get information about your pipelines. Trigger or continue a pipeline.

GET/pipelineGet a list of pipelines
Parameters
NameInRequiredType
org-slugquerynostring
page-tokenquerynostring
minequerynoboolean
Responses
StatusDescriptionSchema
200A sequence of pipelines.
defaultError response.
POST/pipeline/continueContinue a pipeline
Request body

application/json

Responses
StatusDescriptionSchema
200A confirmation message.
defaultError response.
GET/pipeline/{pipeline-id}Get a pipeline by ID
Parameters
NameInRequiredType
pipeline-idpathyesstring
Responses
StatusDescriptionSchema
200A pipeline object.
defaultError response.
GET/pipeline/{pipeline-id}/configGet a pipeline's configuration
Parameters
NameInRequiredType
pipeline-idpathyesstring
Responses
StatusDescriptionSchema
200The configuration strings for the pipeline.
defaultError response.
GET/pipeline/{pipeline-id}/workflowGet a pipeline's workflows
Parameters
NameInRequiredType
pipeline-idpathyesstring
page-tokenquerynostring
Responses
StatusDescriptionSchema
200A paginated list of workflow objects.
defaultError response.
GET/pipeline/{pipeline_id}/valuesGet pipeline values for a pipeline
Responses
StatusDescriptionSchema
200A JSON object of pipeline values.pipelineValues
400
401
404
500
GET/project/{project-slug}/pipelineGet all pipelines
Parameters
NameInRequiredType
project-slugpathyesstring
branchquerynostring
page-tokenquerynostring
Responses
StatusDescriptionSchema
200A sequence of pipelines.
defaultError response.
POST/project/{project-slug}/pipelineTrigger a new pipeline
Parameters
NameInRequiredType
project-slugpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201The created pipeline.
defaultError response.
GET/project/{project-slug}/pipeline/mineGet your pipelines
Parameters
NameInRequiredType
project-slugpathyesstring
page-tokenquerynostring
Responses
StatusDescriptionSchema
200A sequence of pipelines.
defaultError response.
GET/project/{project-slug}/pipeline/{pipeline-number}Get a pipeline by pipeline number
Parameters
NameInRequiredType
project-slugpathyesstring
pipeline-numberpathyes
Responses
StatusDescriptionSchema
200A pipeline object.
defaultError response.
POST/project/{provider}/{organization}/{project}/pipeline/run[Recommended] Trigger a new pipeline
Request body

application/jsontriggerPipelineRequest

Responses
StatusDescriptionSchema
200Successful response with no created pipeline.pipelineNotTriggeredResponse
201Successful response.pipelineTriggeredResponse
400
401
404
Job3

Endpoints relating to [jobs](https://circleci.com/docs/jobs-steps/). Get information about your jobs, retrieve job assets, cancel a job.

POST/jobs/{job-id}/cancelCancel job by job ID
Parameters
NameInRequiredType
job-idpathyesstring
Responses
StatusDescriptionSchema
200Job cancelled successfully.
400Bad request error.
401Unauthorized error.
403Forbidden error.
404Job not found error.
defaultError response.
GET/jobs/{job_id}Get a job
Responses
StatusDescriptionSchema
200Job fetched successfullygetJobResponse
400
401
404
429
500
POST/project/{project-slug}/job/{job-number}/cancelCancel job by job number
Parameters
NameInRequiredType
job-numberpathyes
project-slugpathyesstring
Responses
StatusDescriptionSchema
200
defaultError response.
Workflow5

Endpoints relating to [workflows](https://circleci.com/docs/workflows/). Get information about your workflows, or interact with them to rerun, cancel or approve a job.

GET/workflow/{id}Get a workflow
Responses
StatusDescriptionSchema
200A workflow object.workflow
400
401
404
429
500
POST/workflow/{id}/approve/{approval_request_id}Approve a job
Parameters
NameInRequiredType
approval_request_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
202A confirmation message.
defaultError response.
POST/workflow/{id}/cancelCancel a workflow
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
202A confirmation message.
defaultError response.
GET/workflow/{id}/jobGet a workflow's jobs
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200A paginated sequence of jobs.
defaultError response.
POST/workflow/{id}/rerunRerun a workflow
Parameters
NameInRequiredType
idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
202A confirmation message.
defaultError response.
OIDC Token Management6

Endpoints related to manage oidc identity tokens

GET/org/{orgID}/oidc-custom-claimsGet org-level claims
Responses
StatusDescriptionSchema
200Claims successfully fetched.ClaimResponse
400
403
500
PATCH/org/{orgID}/oidc-custom-claimsPatch org-level claims
Request body

application/jsonPatchClaimsRequest

Responses
StatusDescriptionSchema
200Claims successfully patched.ClaimResponse
400
403
500
DELETE/org/{orgID}/oidc-custom-claimsDelete org-level claims
Responses
StatusDescriptionSchema
200Claims successfully deleted.ClaimResponse
400
403
500
GET/org/{orgID}/project/{projectID}/oidc-custom-claimsGet project-level claims
Responses
StatusDescriptionSchema
200Claims successfully fetched.ClaimResponse
400
403
500
PATCH/org/{orgID}/project/{projectID}/oidc-custom-claimsPatch project-level claims
Request body

application/jsonPatchClaimsRequest

Responses
StatusDescriptionSchema
200Claims successfully patched.ClaimResponse
400
403
500
DELETE/org/{orgID}/project/{projectID}/oidc-custom-claimsDelete project-level claims
Responses
StatusDescriptionSchema
200Claims successfully deleted.ClaimResponse
400
403
500
Policy Management9

Endpoints related to managing policies and making policy decisions

GET/owner/{ownerID}/context/{context}/decisionRetrieves the owner's decision audit logs.
Parameters
NameInRequiredType
statusquerynostring
afterquerynostring
beforequerynostring
branchquerynostring
project_idquerynostring
build_numberquerynostring
offsetquerynointeger
Responses
StatusDescriptionSchema
200Decision logs successfully retrieved.
400
401
403
500
POST/owner/{ownerID}/context/{context}/decisionMakes a decision
Request body

application/json

Responses
StatusDescriptionSchema
200Decision rendered by applying the policy against the provided data. Response will be modeled by the data and rego processed.Decision
400The request is malformed
401The request is unauthorized
500Something unexpected happened on the server.
GET/owner/{ownerID}/context/{context}/decision/settingsGet the decision settings
Responses
StatusDescriptionSchema
200Decision settings successfully retrieved.DecisionSettings
400
401
403
500
PATCH/owner/{ownerID}/context/{context}/decision/settingsSet the decision settings
Request body

application/jsonDecisionSettings

Responses
StatusDescriptionSchema
200Decision settings successfully set.DecisionSettings
400
401
403
500
GET/owner/{ownerID}/context/{context}/decision/{decisionID}Retrieves the owner's decision audit log by given decisionID
Responses
StatusDescriptionSchema
200Decision log successfully retrieved.DecisionLog
400
401
403
404There was no decision log found for given decision_id, and owner_id.
500
GET/owner/{ownerID}/context/{context}/decision/{decisionID}/policy-bundleRetrieves Policy Bundle for a given decision log ID
Responses
StatusDescriptionSchema
200Policy-Bundle retrieved successfully for given decision log IDPolicyBundle
400
401
403
404There was no decision log found for given decision_id, and owner_id.
500
GET/owner/{ownerID}/context/{context}/policy-bundleRetrieves Policy Bundle
Responses
StatusDescriptionSchema
200Policy-Bundle retrieved successfully.PolicyBundle
400
401
403
500
POST/owner/{ownerID}/context/{context}/policy-bundleCreates policy bundle for the context
Parameters
NameInRequiredType
dryquerynoboolean
Request body

application/jsonBundlePayload

Responses
StatusDescriptionSchema
200Policy-Bundle diff successfully returned.BundleDiff
201Policy-Bundle successfully created.BundleDiff
400
401
403
413The request exceeds the maximum payload size for policy bundles ~2.5Mib
500
GET/owner/{ownerID}/context/{context}/policy-bundle/{policyName}Retrieves a policy document
Parameters
NameInRequiredType
policyNamepathyesstring
Responses
StatusDescriptionSchema
200Policy retrieved successfully.Policy
400
401
403
404There was no policy that was found with the given owner_id and policy name.
500
Deploy5

Endpoints related to deploy management.

GET/deploy/componentsList Components
Responses
StatusDescriptionSchema
200Paginated components listpaginatedComponentList
400
404
500
GET/deploy/components/{component_id}Get Component
Responses
StatusDescriptionSchema
200Successful response.component
400
404
500
GET/deploy/components/{component_id}/versionsList Component Versions
Responses
StatusDescriptionSchema
200Paginated component versions listpaginatedComponentVersionList
400
404
500
GET/deploy/environmentsList Environments
Responses
StatusDescriptionSchema
200Paginated environments listpaginatedEnvironmentList
400
404
500
GET/deploy/environments/{environment_id}Get Environment
Responses
StatusDescriptionSchema
200Environmentenvironment
400
404
500
OTel3

[__EXPERIMENTAL__] Endpoints related to managing OpenTelemetry exporter configurations.

GET/otel/exporters🧪 List OTLP exporters
Responses
StatusDescriptionSchema
200List of OTLP exporters.exporterList
400
401
404
500
POST/otel/exporters🧪 Create an OTLP exporter
Request body

application/jsoncreateExporterRequest (required)

Responses
StatusDescriptionSchema
201OTLP exporter created.exporter
400
401
404
500
DELETE/otel/exporters/{otel_exporter_id}🧪 Delete an OTLP exporter
Responses
StatusDescriptionSchema
204OTLP exporter deleted.
400
401
404
500
Pipeline Definition5

Endpoints related to creating and managing pipeline definitions.

GET/projects/{project_id}/pipeline-definitionsList pipeline definitions
Responses
StatusDescriptionSchema
200Successful response.pipelineDefinitionList
400
401
404
500
POST/projects/{project_id}/pipeline-definitionsCreate pipeline definition
Request body

application/jsoncreatePipelineDefinitionRequest

Responses
StatusDescriptionSchema
200Successful response.pipelineDefinition
400
401
404
500
GET/projects/{project_id}/pipeline-definitions/{pipeline_definition_id}Get pipeline definition
Responses
StatusDescriptionSchema
200Successful response.pipelineDefinition
400
401
404
500
PATCH/projects/{project_id}/pipeline-definitions/{pipeline_definition_id}Update pipeline definition
Request body

application/jsonupdatePipelineDefinitionRequest

Responses
StatusDescriptionSchema
200Successful response.pipelineDefinition
400
401
404
500
DELETE/projects/{project_id}/pipeline-definitions/{pipeline_definition_id}Delete pipeline definition
Responses
StatusDescriptionSchema
200Successful response.pipelineDefinitionDeleted
400
401
404
500
Project13

Endpoints related to creating and managing a project.

POST/organization/{org-slug-or-id}/projectCreate a new project
Parameters
NameInRequiredType
org-slug-or-idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200The new project
defaultError response.
GET/project/{project-slug}Get a project
Parameters
NameInRequiredType
project-slugpathyesstring
Responses
StatusDescriptionSchema
200A project object
defaultError response.
DELETE/project/{project-slug}Delete a project
Parameters
NameInRequiredType
project-slugpathyesstring
Responses
StatusDescriptionSchema
200A confirmation message.
defaultError response.
GET/project/{project-slug}/checkout-keyGet all checkout keys
Parameters
NameInRequiredType
project-slugpathyesstring
digestquerynostring
Responses
StatusDescriptionSchema
200A sequence of checkout keys.
defaultError response.
POST/project/{project-slug}/checkout-keyCreate a new checkout key
Parameters
NameInRequiredType
project-slugpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201The checkout key.
defaultError response.
GET/project/{project-slug}/checkout-key/{fingerprint}Get a checkout key
Parameters
NameInRequiredType
project-slugpathyesstring
fingerprintpathyesstring
Responses
StatusDescriptionSchema
200The checkout key.
defaultError response.
DELETE/project/{project-slug}/checkout-key/{fingerprint}Delete a checkout key
Parameters
NameInRequiredType
project-slugpathyesstring
fingerprintpathyesstring
Responses
StatusDescriptionSchema
200A confirmation message.
defaultError response.
GET/project/{project-slug}/envvarList all environment variables
Parameters
NameInRequiredType
project-slugpathyesstring
Responses
StatusDescriptionSchema
200A sequence of environment variables.
defaultError response.
POST/project/{project-slug}/envvarCreate an environment variable
Parameters
NameInRequiredType
project-slugpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201The environment variable.
defaultError response.
GET/project/{project-slug}/envvar/{name}Get a masked environment variable
Parameters
NameInRequiredType
project-slugpathyesstring
namepathyesstring
Responses
StatusDescriptionSchema
200The environment variable.
defaultError response.
DELETE/project/{project-slug}/envvar/{name}Delete an environment variable
Parameters
NameInRequiredType
project-slugpathyesstring
namepathyesstring
Responses
StatusDescriptionSchema
200A confirmation message.
defaultError response.
GET/project/{provider}/{organization}/{project}/settingsGet project settings
Responses
StatusDescriptionSchema
200Successful response.project_settings
401
403
404
429
500
PATCH/project/{provider}/{organization}/{project}/settingsUpdate project settings
Request body

application/jsonproject_settings (required)

Responses
StatusDescriptionSchema
200Successful response. Always includes the full advanced settings object. Returned even when the provided updates match the existing settings, but can also be returned when `oss: true` fails to set.project_settings
400Request is malformed, e.g. with improperly encoded JSON
401
403
404
429
500
Rollback1

Endpoints related to creating and managing a rollback.

POST/projects/{project_id}/rollbackRollback a project
Request body

application/jsonrollbackProjectRequest (required)

Responses
StatusDescriptionSchema
202Rollback request accepted.rollbackProjectResponse
400
404
409
500
Trigger5

Endpoints related to creating and managing triggers.

GET/projects/{project_id}/pipeline-definitions/{pipeline_definition_id}/triggersList pipeline definition triggers
Responses
StatusDescriptionSchema
200Successful response.triggerList
400
401
404
500
POST/projects/{project_id}/pipeline-definitions/{pipeline_definition_id}/triggersCreate trigger
Request body

application/jsoncreateTriggerRequest

Responses
StatusDescriptionSchema
200Successful response.trigger
400
401
404
500
GET/projects/{project_id}/triggers/{trigger_id}Get trigger
Responses
StatusDescriptionSchema
200Successful response.trigger
400
401
404
500
PATCH/projects/{project_id}/triggers/{trigger_id}Update trigger
Request body

application/jsonupdateTriggerRequest

Responses
StatusDescriptionSchema
200Successful response.trigger
400
401
404
500
DELETE/projects/{project_id}/triggers/{trigger_id}Delete trigger
Responses
StatusDescriptionSchema
200Successful response.triggerDeleted
400
401
404
500
Usage2

Endpoints related to organization usage exports. The Usage API is an API provided by CircleCI to customers to access all of their usage data on CircleCI. It contains all the metadata (org, project, pipeline, workflow, and job dimensions) as well as credit consumption data. It is provided at the near lowest level of granularity (at the job run level). __Restrictions__ * Max result set size of 100MB * Query timeout of 4 hours. * Max date window of 32 days * 13 months of historical data is available * No PII is surfaced in the Usage API (e.g. email address, Github login name) * The POST endpoint can only be queried up to (i.e. is rate limited to) 10 times per hour per org * The GET endpoint can only be queried up to (i.e. is rate limited to) 10 times per hour per org * To increase performance the API can generate multiple CSV files that need to be merged after download __Requirements__ * organization ID - To get your organization ID go to to Organization Settings tab in the CircleCI app. ie https://app.circleci.com/settings/organization/<vcs>/<org name>/overview * API Personal Access Token - https://circleci.com/docs/managing-api-tokens/ __Report Fields__ | | Field | Description | |---------------------------------------|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | | organization_id | The org ID | | | organization_name | The org name | | | organization_created_date | The date (UTC) that the org was created | | Project-level attributes | project_id | The project ID / token | | | project_name | The project name. For classic orgs, the project name is inherited from Github. For standalone, the org is set by the user. | | | project_created_date | The date (UTC) that the project was created. For classic orgs, this is the date that the repo was authorized on CircleCI. For standalone orgs, this is the date that the project was created on CircleCI | | | last_build_finished_at | The date (UTC) of the last pipeline run on this project | | Pipeline-level attributes | vcs_name | The name of the VCS connected to the project on which the pipeline was run | | | vcs_url | The URL of the VCS on which the pipeline was run | | | vcs_branch | The branch on which the pipeline was run | | | pipeline_id | The ID of the pipeline instance that was triggered. If a pipeline is re-run, it will share the same pipeline ID as the original pipeline instance | | | pipeline_created_at | The date (UTC) the pipeline instance was first triggered | | | pipeline_number | The pipeline number | | | is_unregistered_user | Y/N flag of whether the pipeline was triggered by a CircleCI user or a user not registered on CircleCI. Examples of the latter include users who commit on a connected VCS and consume credits on CircleCI. | | | pipeline_trigger_source | The source of the pipeline instance trigger (API, webhook, etc.) | | | pipeline_trigger_user_id | The user ID / token of the user who triggered the pipeline | | Workflow-level attributes | workflow_id | The ID of the workflow instance that was triggered | | | workflow_name | The name of the workflow | | | workflow_first_job_queued_at | The timestamp (UTC) of when the workflow instance started to queue | | | workflow_first_job_started_at | The timestamp (UTC) of when the workflow instance started to run | | | workflow_stopped_at | The timestamp (UTC) of when the workflow instance stopped | | | is_workflow_successful | Y/N flag of whether all jobs in the workflow were successfully ran | | Job-level attributes | job_name | The name of the job (the name the customer sees in the UI) | | | job_id | The ID of the job run instance that was triggered | | | job_run_number | The number of the job run instance that was triggered | | | job_run_date | The date (UTC) of the job run instance began | | | job_run_queued_at | The timestamp (UTC) of when the job started to queue | | | job_run_started_at | The timestamp (UTC) of when the job started to run | | | job_run_stopped_at | The timestamp (UTC) of when the job stopped | | | job_build_status | The status of the job run instance | | | resource_class | The resource class of the job run instance | | | operating_system | The operating system of the job run instance | | | executor | The executor of the job run instance | | | parallelism | The parallelism of the job run instance | | | job_run_seconds | The duration in seconds of the job run instance | | | median_cpu_utilization_pct | The median CPU utilization calculated over the course of the entire job run instance. CPU utilization is logged every 15 seconds. It will not be available for any jobs under 15 seconds and occasionally will not be available for jobs greater than 15 seconds. | | | max_cpu_utilization_pct | The max CPU utilization logged over the course of the entire job run instance. CPU utilization is logged every 15 seconds. It will not be available for any jobs under 15 seconds and occasionally will not be available for jobs greater than 15 seconds. | | | median_ram_utilization_pct | The median RAM utilization calculated over the course of the entire job run instance. RAM utilization is logged every 15 seconds. It will not be available for any jobs under 15 seconds and occasionally will not be available for jobs greater than 15 seconds. | | | max_ram_utilization_pct | The max RAM utilization logged over the course of the entire job run instance. RAM utilization is logged every 15 seconds. It will not be available for any jobs under 15 seconds and occasionally will not be available for jobs greater than 15 seconds. | | Credit consumption metrics | compute_credits | The compute credits consumed by this job run instance | | | dlc_credits | The docker-layer caching credits consumed by this job run instance | | | user_credits | The user credits consumed by this job run instance | | | storage_credits | The storage credits consumed by this job run instance. Note: When an organization is below its allocated storage threshold, a job that uses storage will have 0 storage credits applied. The organization's included storage threshold can be found on the [CircleCI web app](https://app.circleci.com/home) by navigating to **Plan > Plan Usage**. | | | network_credits | The network credits consumed by this job run instance | | | lease_credits | The lease credits consumed by this job run instance | | | lease_overage_credits | The lease overage credits consumed by this job run instance | | | ipranges_credits | The IP ranges credits consumed by this job run instance | | | total_credits | The total credits consumed by this job run instance |

POST/organizations/{org_id}/usage_export_jobCreate a usage export
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Usage export created successfullyusage_export_job
400
401
404
429
500
GET/organizations/{org_id}/usage_export_job/{usage_export_job_id}Get a usage export
Responses
StatusDescriptionSchema
200Usage export fetched successfullyget_usage_export_job_status
400
401
404
429
500
Webhook5

Endpoints related to creating and managing outbound webhooks.

GET/webhookList webhooks
Responses
StatusDescriptionSchema
200A list of webhooks.webhookList
400
404
500
POST/webhookCreate an outbound webhook
Request body

application/jsoncreateWebhookRequest (required)

Responses
StatusDescriptionSchema
201A webhook.webhook
400
404
500
GET/webhook/{webhook_id}Get a webhook
Responses
StatusDescriptionSchema
200A webhook.webhook
400
401
404
500
PUT/webhook/{webhook_id}Update an outbound webhook
Request body

application/jsonupdateWebhookRequest (required)

Responses
StatusDescriptionSchema
200A webhook.webhook
400
401
404
500
DELETE/webhook/{webhook_id}Delete an outbound webhook
Responses
StatusDescriptionSchema
200A confirmation message.webhookDeleted
400
401
404
500
Groups4
GET/organizations/{org_id}/groupsGroups in an organization
Responses
StatusDescriptionSchema
200Successfully get all the groups in an organization. Results are paginated.groups
403
404
500
POST/organizations/{org_id}/groupsCreate Groups
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Successful creation of a group.group
400
401
403
404
409
500
GET/organizations/{org_id}/groups/{group_id}A group in an organization
Responses
StatusDescriptionSchema
200Successfully gets a group. Members not included.group
403
404
500
DELETE/organizations/{org_id}/groups/{group_id}Delete a group
Responses
StatusDescriptionSchema
200Successful deletion of a group.
401
403
404
500
Organization6
POST/organizationCreate a new organization
Request body

application/json

Responses
StatusDescriptionSchema
201The newly created organization
defaultError response.
GET/organization/{org-slug-or-id}Get an organization
Parameters
NameInRequiredType
org-slug-or-idpathyesstring
Responses
StatusDescriptionSchema
200An organization object
defaultError response.
DELETE/organization/{org-slug-or-id}Delete an organization
Parameters
NameInRequiredType
org-slug-or-idpathyesstring
Responses
StatusDescriptionSchema
202A confirmation message.
defaultError response.
GET/organization/{org-slug-or-id}/url-orb-allow-listList the entries in the org's URL Orb allow-list
Parameters
NameInRequiredType
org-slug-or-idpathyesstring
Responses
StatusDescriptionSchema
200URL Orb allow-list entries
defaultError response.
POST/organization/{org-slug-or-id}/url-orb-allow-listCreate a new URL Orb allow-list entry
Parameters
NameInRequiredType
org-slug-or-idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200The ID of the new URL Orb allow-list entry
defaultError response.
DELETE/organization/{org-slug-or-id}/url-orb-allow-list/{allow-list-entry-id}Remove an entry from the org's URL orb allow-list
Parameters
NameInRequiredType
org-slug-or-idpathyesstring
allow-list-entry-idpathyesstring
Responses
StatusDescriptionSchema
200The ID of the removed URL Orb allow-list entry
defaultError response.
Schedule5
GET/project/{project-slug}/scheduleList schedule triggers
Parameters
NameInRequiredType
project-slugpathyesstring
page-tokenquerynostring
Responses
StatusDescriptionSchema
200A sequence of schedules.
defaultError response.
POST/project/{project-slug}/scheduleCreate a schedule
Parameters
NameInRequiredType
project-slugpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201A schedule object.
defaultError response.
GET/schedule/{schedule-id}Get a schedule by ID. Available only on schedules associated with GitHub OAuth or Bitbucket Cloud pipeline definitions.
Parameters
NameInRequiredType
schedule-idpathyesstring
Responses
StatusDescriptionSchema
200A schedule object.
defaultError response.
PATCH/schedule/{schedule-id}Update a schedule
Parameters
NameInRequiredType
schedule-idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200A schedule object.
defaultError response.
DELETE/schedule/{schedule-id}Delete a schedule
Parameters
NameInRequiredType
schedule-idpathyesstring
Responses
StatusDescriptionSchema
200A confirmation message.
defaultError response.

Try it

Developer reference

Base URLhttps://circleci.com/api/v2
Rate limit

CircleCI's API developer guide states it 'reserves the right to throttle the requests made by an individual user or to individual resources' to protect system stability, with different protections for different parts of the API — especially against sudden traffic bursts and sustained high-volume polling such as frequent status checks. A throttled request returns HTTP 429, usually accompanied by a Retry-After header giving the number of seconds to wait before retrying; CircleCI recommends handling this gracefully with exponential backoff rather than assuming a fixed per-endpoint quota.

Key endpoints
  • GET/me
  • GET/project/{project-slug}
  • POST/project/{project-slug}/pipeline
  • GET/project/{project-slug}/pipeline
  • GET/workflow/{id}/job