> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cernel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Developer Tools

> Manage API keys and service accounts to integrate Cernel into your own systems.

Developer Tools give you programmatic access to Cernel. Use the API to push products from your own systems and pull enriched content back once it's generated.

## How it works

Under **Settings > Developer > API**, you authenticate requests to the [Public API](/integrations/public-api) with keys, organized into service accounts, one per integration. Push products in, let automations enrich them, then poll the [changes endpoint](/integrations/public-api#getting-enriched-data-back) to pull the results back.

### Why you would use this

<CardGroup cols={2}>
  <Card title="Automate product syncing" icon="rotate">
    Push products from your ERP, PIM, or custom backend into Cernel without manual imports.
  </Card>

  <Card title="Pull enriched content back" icon="arrow-down-to-line">
    Poll the changes endpoint to pull AI-generated content and product updates back into your own systems on your schedule.
  </Card>
</CardGroup>

## Step-by-step guide

### Managing API keys with service accounts

An API key authenticates requests to the [Public API](/integrations/public-api). Keys are organized into **service accounts**: one account per integration, each holding its own keys. Grouping keys this way lets you see which integration has been calling and switch one off without disturbing the others.

<Frame caption="The API settings page, organized around service accounts">
  <img src="https://mintcdn.com/cernel-e5adbeb5/wSIRuADLXrPaoXfa/images/settings/api-service-accounts.png?fit=max&auto=format&n=wSIRuADLXrPaoXfa&q=85&s=037851d5b55697ef7c4cea06bf0e2b03" alt="The API Settings page under Settings > Developer > API. A 'Service accounts' section lists accounts named Product, Test, and Service account, each showing its key count, created date, and last-active date, with a New key button and an expand control. The Product account is expanded to show its individual keys, each with a masked value, created date, last-used date, and a delete button. A New service account button sits at the top right." data-og-width="2880" width="2880" data-og-height="1800" height="1800" data-path="images/settings/api-service-accounts.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/cernel-e5adbeb5/wSIRuADLXrPaoXfa/images/settings/api-service-accounts.png?w=280&fit=max&auto=format&n=wSIRuADLXrPaoXfa&q=85&s=237b85d6410235037034bd6a3b2eb837 280w, https://mintcdn.com/cernel-e5adbeb5/wSIRuADLXrPaoXfa/images/settings/api-service-accounts.png?w=560&fit=max&auto=format&n=wSIRuADLXrPaoXfa&q=85&s=3155950671e997822b0d67c2110e83c6 560w, https://mintcdn.com/cernel-e5adbeb5/wSIRuADLXrPaoXfa/images/settings/api-service-accounts.png?w=840&fit=max&auto=format&n=wSIRuADLXrPaoXfa&q=85&s=5260812d1bbbc67ce0928023861689cc 840w, https://mintcdn.com/cernel-e5adbeb5/wSIRuADLXrPaoXfa/images/settings/api-service-accounts.png?w=1100&fit=max&auto=format&n=wSIRuADLXrPaoXfa&q=85&s=83a2b3f61648616c41c3e2e5cb34fa01 1100w, https://mintcdn.com/cernel-e5adbeb5/wSIRuADLXrPaoXfa/images/settings/api-service-accounts.png?w=1650&fit=max&auto=format&n=wSIRuADLXrPaoXfa&q=85&s=3f39d664ae932f1f122aae7ff5dd3de9 1650w, https://mintcdn.com/cernel-e5adbeb5/wSIRuADLXrPaoXfa/images/settings/api-service-accounts.png?w=2500&fit=max&auto=format&n=wSIRuADLXrPaoXfa&q=85&s=8867228d1d7914b4bcad407957c58b7e 2500w" />
</Frame>

<Steps>
  <Step title="Open API settings">
    Go to **Settings > Developer > API**. Each service account is listed with the number of keys it holds, when it was created, and when it was last used. Expand an account to see its individual keys.
  </Step>

  <Step title="Create a service account">
    Click **New service account** and name it after the integration that will use it, for example `Shopify` or `ERP sync`. That name is what shows up on the work its keys do. Creating an account immediately mints its first key.
  </Step>

  <Step title="Copy the new key">
    When a key is created, Cernel shows it once in a **Your new API key** dialog. Copy it and store it somewhere safe. For your security you won't be able to see the full key again, only a masked version.

    <Warning>
      Store your API key like a password. Anyone with the key can access your organization's data through the API. If a key is ever exposed, revoke it and mint a new one.
    </Warning>
  </Step>

  <Step title="Add or rotate keys">
    Click **New key** on an account to mint another key for it. To roll over to a fresh key without downtime, add the new key, update your integration to use it, then revoke the old one. Revoking a key stops it working immediately while the account and its other keys keep going. A revoked key stays in the list, marked **Revoked**, so a past call still has an explanation.
  </Step>

  <Step title="Rename or delete an account">
    Renaming and deleting a service account are **admin-only**; minting a key stays open to any member. You can delete an account only once none of its keys are still live, so revoke its keys first.
  </Step>

  <Step title="View API documentation">
    Click **Visit Documentation** to open the full API reference in a new tab, with every endpoint, request format, and response schema.
  </Step>
</Steps>

<Note>
  Keys created before service accounts existed appear under a **Keys without an account** list at the bottom of the page. There's nothing to do there: the next time such a key is used, it gets an account of its own and moves up to the main list. Revoke any you no longer need.
</Note>

### Getting enriched content back

Cernel does not push results to your systems. Once automations have enriched your products, poll the [changes endpoint](/integrations/public-api#getting-enriched-data-back) to pull the updates back in chronological order, using the offset it returns to pick up where you left off on the next poll. See [Building a custom product pipeline](/integrations/public-api#building-a-custom-product-pipeline) for the full walkthrough.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Where do I find my API key?">
    Go to **Settings > Developer > API**, where keys are grouped under service accounts. Cernel shows a key's full value only once, in a dialog right after it's created, so copy it then. Afterwards only a masked version is shown. If you've lost a key, mint a new one on its account and revoke the old one.
  </Accordion>

  <Accordion title="Can I have multiple API keys?">
    Yes. Create a **service account** per integration, and give each account as many keys as you need. Keys are revoked individually, so you can rotate one key or switch off a single integration without affecting the others. This is a change from the earlier model of one key per organization.
  </Accordion>

  <Accordion title="How do I rotate an API key without downtime?">
    Mint a new key on the same service account with **New key**, update your integration to use it, then revoke the old key. Because both keys are live during the switch, nothing stops working in between. Revoking takes effect immediately, so revoke only after the new key is in place.
  </Accordion>

  <Accordion title="How do I get enriched content back out of Cernel?">
    Poll the [changes endpoint](/integrations/public-api#getting-enriched-data-back) on the Public API. It returns enrichment updates in chronological order, and you use the offset it returns to fetch only what changed since your last poll. There is no push-style webhook delivery, so retrieving results is always a poll from your side.
  </Accordion>
</AccordionGroup>

## What's next

<CardGroup cols={2}>
  <Card title="Public API" icon="arrow-right" href="/integrations/public-api">
    Set up a full API integration for pushing products programmatically.
  </Card>

  <Card title="Automations" icon="arrow-right" href="/features/automations">
    Auto-enrich products pushed via API with automations.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.