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

# Developer Tools

> Use these developer-friendly tools to get the most out of your account when integrating with the Marqeta platform.

If you have signed up on Marqeta.com as a developer, you have access to a dashboard that provides tools for integrating with the Marqeta platform so that you can:

* Get API keys for your public sandbox.

* View a transaction’s history.

* Manage your webhooks.

For more about development, see [Core API Quick Start](/developer-guides/core-api-quick-start/) and [Introduction](/core-api/introduction/) in the Core API Reference.

<h2 id="_get_api_keys_for_your_public_sandbox">
  Get API keys for your public sandbox
</h2>

Use API keys to set up authorization credentials that allow you to send requests to your public sandbox. For more information, see [Authentication](/core-api/authentication/) in the Core API Reference.

To access your credentials and set up your public sandbox:

<Steps>
  <Step>
    Log into your [public sandbox account](https://app.marqeta.com/). You can also select **Sign in** in the upper-right corner of any page of Marqeta Docs. Once authenticated, select **Dashboard →** in the upper-right corner of the page to display the [API Keys](https://app.marqeta.com/development/) page of your dashboard.
  </Step>

  <Step>
    Copy and paste the credentials below.
  </Step>

  <Step>
    Use the base URL to build your endpoints.
  </Step>

  <Step>
    Use the sample cURL to view the details of the card product that was created for your public sandbox.
  </Step>
</Steps>

| Application token    | Token that identifies your API client. Think of it as your username.                                                 |
| -------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Admin access token   | Allows you to access your public sandbox. Think of it as your secret password.                                       |
| Base URL             | Append endpoints to this URL when making API requests.                                                               |
| Try out your sandbox | Run this code in a terminal window to view the details of the card product that was created for your public sandbox. |

<h2 id="_view_a_transactions_history">
  View a transaction’s history
</h2>

You can view the lifecycle of a card token in your public sandbox using the interactive [Transaction Timeline](https://app.marqeta.com/development/transaction-timeline) tool. All public sandbox accounts with the Developer role include access to the Transaction Timeline.

The Transaction Timeline helps newcomers to the Marqeta platform quickly understand the role played by transaction flows in their integration, as well as in the broader payments space. It demonstrates line-by-line how individual transactions impact each other, and how they affect the account balance.

To view a card token’s transaction history using the Transaction Timeline:

<Steps>
  <Step>
    After simulating at least one transaction in your public sandbox, access the Transaction Timeline by logging into your [dashboard](https://app.marqeta.com/development/transaction-timeline).
  </Step>

  <Step>
    Select **Transaction timeline** from the left-side navigation panel.
  </Step>

  <Step>
    Pick one of your card tokens from the list of existing active cards that appear in the dropdown list on the right side of the screen.
  </Step>

  <Step>
    The tool automatically builds and displays a history of all the transactions completed on that card. New transactions are added to the timeline as they occur in your public sandbox, with no need to refresh the page. Content in the Transaction Timeline is not cleared when you log out of your dashboard and it never expires, enabling you to accumulate a rich dataset of simulated transactions over time.
  </Step>
</Steps>

For more about the available balance or the ledger balance, select the value in the Transaction Timeline’s events table to reveal a tooltip.

To filter on a particular series of related transactions, select the <img className="inline-image" src="https://mintcdn.com/marqeta-b295cded/Zl4-OzNLF5XRh78N/images/docs/developer-guides/developer-tools/transactionTrainer_btnAddFilter.png?fit=max&auto=format&n=Zl4-OzNLF5XRh78N&q=85&s=798b8bbe20e60f03512a9f9864e5ce57" alt="Apply filter" width="20" height="17" data-path="images/docs/developer-guides/developer-tools/transactionTrainer_btnAddFilter.png" /> button. To remove the filter, select <img className="inline-image" src="https://mintcdn.com/marqeta-b295cded/Zl4-OzNLF5XRh78N/images/docs/developer-guides/developer-tools/transactionTrainer_btnRemoveFilter.png?fit=max&auto=format&n=Zl4-OzNLF5XRh78N&q=85&s=1ae913341a3a05a540a532b9d3cb3808" alt="Remove filter" width="20" height="12" data-path="images/docs/developer-guides/developer-tools/transactionTrainer_btnRemoveFilter.png" />.

To copy the event token to the clipboard, select the <img className="inline-image" src="https://mintcdn.com/marqeta-b295cded/Zl4-OzNLF5XRh78N/images/docs/developer-guides/developer-tools/transactionTrainer_btnCopyEventToken.png?fit=max&auto=format&n=Zl4-OzNLF5XRh78N&q=85&s=8c3d581641f2e76b69f6bc75b347b91d" alt="Copy event token to clipboard" width="18" height="20" data-path="images/docs/developer-guides/developer-tools/transactionTrainer_btnCopyEventToken.png" /> button.

For more about cards and card tokens, see [Cards](/core-api/cards/) in the Core API Reference.

<h2 id="_manage_your_webhooks">
  Manage your webhooks
</h2>

Webhooks are real-time notifications to keep you informed of specific events that occur within your public sandbox or integration. For example, you could create a webhook to send `state.activated` events to your application’s webhook URL that would inform your cardholder when a card has been activated.

You can manage webhooks in your sandbox from the **Webhooks** page. For information about working with webhooks in production, see [About Webhooks](/developer-guides/about-webhooks/).

With your account/program, you can configure and manage up to five webhooks.

<h3 id="_to_add_a_webhook">
  To add a webhook
</h3>

<Steps>
  <Step>
    Select **Webhooks** in the left-side navigation panel.
  </Step>

  <Step>
    Select **Add webhook**.
  </Step>

  <Step>
    In the screen that appears, enter the webhook details per the table below, then select **Save**.
  </Step>
</Steps>

| Fields                                                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Name<br /><br />string<br /><br />required                    | Descriptive name of the webhook.<br /><br />**Allowable Values:**<br /><br />64 char max                                                                                                                                                                                                                                                                                                                                                   |
| URL<br /><br />string<br /><br />required                     | URL of your webhook endpoint.<br /><br />**Allowable Values:**<br /><br />- 255 char max<br />- Must be HTTPS<br />- Empty string not allowed                                                                                                                                                                                                                                                                                              |
| Authentication username<br /><br />string<br /><br />required | Username for accessing your webhook endpoint.<br /><br />**Allowable Values:**<br /><br />50 char max                                                                                                                                                                                                                                                                                                                                      |
| Authentication password<br /><br />string<br /><br />required | Password for accessing your webhook endpoint.<br /><br />**Allowable Values:**<br /><br />- 20-50 characters<br />- Must contain at least one numeral<br />- Must contain at least one lowercase letter<br />- Must contain at least one uppercase letter<br />- Must contain at least one of these symbols:<br />`@``#``\$``%``!``^``&``*``(``)`<br />`_``+``~``\\``-``=``[``]``\{``}`<br />`,``;``:``'``"``.``/``<``>``?`<code>\`</code> |
| Custom headers<br /><br />object<br /><br />optional          | Contains information about the webhook’s custom HTTP headers for outgoing calls.<br /><br />**Allowable Values:**<br /><br />See <a href="/core-api/webhooks/#put_webhooks_custom_headers_token">The config.custom\_header object (request)</a>.                                                                                                                                                                                           |

<h3 id="_to_disable_a_webhook">
  To disable a webhook
</h3>

You have the option of disabling an activated webhook that you do not want to use; you can always reactivate it later on if necessary. It is not currently possible to delete a webhook once it has been created.

<Steps>
  <Step>
    Select **Webhooks** in the left-side navigation panel. A list of all the webhooks you have created, regardless of state, is displayed.
  </Step>

  <Step>
    Do one of the following:

    * Disable from the summary page of all your webhooks:

      * Select a new state for the webhook by making a selection in the **State** dropdown list.

    * Disable from the selected webhook’s own Details page:

      * In the **Name** column, select the webhook you want to disable. The page refreshes to display details of the selected webhook.

      * Select **Disable webhook**.

      * When prompted to confirm your actions, select **Disable**.
  </Step>
</Steps>

<h3 id="_to_reactivate_a_disabled_webhook">
  To reactivate a disabled webhook
</h3>

If you have previously disabled a webhook, you must reactivate it before the Marqeta platform will resume sending event notifications to the specified URL.

<Steps>
  <Step>
    Select **Webhooks** in the left-side navigation panel. A list of all the webhooks you have created, regardless of state, is displayed.
  </Step>

  <Step>
    Do one of the following:

    * Reactivate from the summary page of all your webhooks:

      * Select a new state for the webhook by making a selection in the **State** dropdown list.

    * Reactivate from the selected webhook’s own Details page:

      * In the **Name** column, select the webhook you want to reactivate. The page refreshes to display details of the selected webhook.

      * Select **Reactivate webhook**.

      * When prompted to confirm your actions, select **Reactivate**.
  </Step>
</Steps>

<h3 id="_to_update_a_webhook">
  To update a webhook
</h3>

<Steps>
  <Step>
    Select **Webhooks** in the left-side navigation panel. A list of all the webhooks you have created, regardless of state, is displayed.
  </Step>

  <Step>
    In the **Name** column, select the webhook you want to update. The page refreshes to display details of the selected webhook.
  </Step>

  <Step>
    Enter the webhook details per the table below, then select **Save**.
  </Step>
</Steps>

| Fields                                                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Name<br /><br />string<br /><br />required                    | Descriptive name of the webhook.<br /><br />**Allowable Values:**<br /><br />64 char max                                                                                                                                                                                                                                                                                                                                                   |
| URL<br /><br />string<br /><br />required                     | URL of your webhook endpoint.<br /><br />**Allowable Values:**<br /><br />- 255 char max<br />- Must be HTTPS<br />- Empty string not allowed                                                                                                                                                                                                                                                                                              |
| Authentication username<br /><br />string<br /><br />required | Username for accessing your webhook endpoint.<br /><br />**Allowable Values:**<br /><br />50 char max                                                                                                                                                                                                                                                                                                                                      |
| Authentication password<br /><br />string<br /><br />required | Password for accessing your webhook endpoint.<br /><br />**Allowable Values:**<br /><br />- 20-50 characters<br />- Must contain at least one numeral<br />- Must contain at least one lowercase letter<br />- Must contain at least one uppercase letter<br />- Must contain at least one of these symbols:<br />`@``#``\$``%``!``^``&``*``(``)`<br />`_``+``~``\\``-``=``[``]``\{``}`<br />`,``;``:``'``"``.``/``<``>``?`<code>\`</code> |
| Custom headers<br /><br />object<br /><br />optional          | Contains information about the webhook’s custom HTTP headers for outgoing calls.<br /><br />**Allowable Values:**<br /><br />See <a href="/core-api/webhooks/#put_webhooks_custom_headers_token">The config.custom\_header object (request)</a>.                                                                                                                                                                                           |

<h3 id="_to_manage_event_listeners">
  To manage event listeners
</h3>

Use the **Event listeners** tab to specify which Marqeta events you want the selected webhook to listen on.

You can add as many or as few events as you need to a webhook, then fine-tune your webhooks as your development progresses. For example, when starting out, you might want your application to listen for all event types. Later on, you might subscribe only to specific transaction events such as `authorization.clearing` and `authorization.atm.withdrawal`.

<Steps>
  <Step>
    Select **Webhooks** in the left-side navigation panel. A list of all the webhooks you have created, regardless of state, is displayed.
  </Step>

  <Step>
    In the **Name** column, select the webhook whose event listeners you want to manage. The page refreshes to display details of the selected webhook.
  </Step>

  <Step>
    Select the **Event listeners** tab. A searchable, hierarchical list of all events you can listen on is displayed.
  </Step>

  <Step>
    Browse and search the list until you have identified and selected the appropriate events, then select **Save selected events**. A confirmation is displayed, and the total number of selected events is indicated below the list.
  </Step>
</Steps>

At any time, you can verify that your webhook is working properly by clicking **Send test event**. After you confirm your actions, the displayed health check payload is delivered to the currently selected webhook. Your dashboard informs you via a toast notification once the test event has been successfully sent.


## Related topics

- [Dashboard Overview and Quick Start](/docs/developer-guides/dashboard-overview-and-quick-start.md)
- [Core API Quick Start](/docs/developer-guides/core-api-quick-start.md)
- [Control Center in the Marqeta Dashboard](/docs/developer-guides/control-center-dashboard.md)
- [Marqeta.com Account Management](/docs/developer-guides/marqeta-account-management.md)
- [About UX Toolkit](/docs/developer-guides/about-ux-toolkit.md)
