Skip to content
OpsGenieSpike

How to export your
Atlassian OpsGenie data

Atlassian deletes OpsGenie data that has not been moved by April 5, 2027. Its migration page offers a direct data download only to Data Center customers, so cloud teams export through the OpsGenie API. This guide shows what you can export, the calls to use, and the limits to plan for.

What happens on April 5, 2027

Download PDF
  • Data that has not been moved is deleted.OpsGenie is shut down and no longer accessible on that date. See Atlassian’s migration page.
  • The API works until then.The OpsGenie REST API keeps responding until April 5, 2027, so run your export well before that date. See what happens when OpsGenie is turned off.
  • Turning OpsGenie off cannot be undone.If you turn it off yourself, you lose all access at once. Export first, and keep OpsGenie running until you have cut over to Spike.

What you can export

Every call is a GET request to the OpsGenie API.

  • UsersAPI call: GET /v2/usersThe list leaves out phone numbers and emails. Add ?expand=contact on GET /v2/users/{id} to get each person’s contact details.
  • Teams and membersAPI call: GET /v2/teamsReturns every team without paging. Open each team with GET /v2/teams/{id} to get its members.
  • Schedules and rotationsAPI call: GET /v2/schedules?expand=rotationYou can also download a schedule as an iCalendar (.ics) file from its page in OpsGenie.
  • Escalation policiesAPI call: GET /v2/escalationsOpen one with GET /v2/escalations/{id} for its details.
  • Routing rulesAPI call: GET /v2/teams/{team}/routing-rulesOne call for each team. Your API key must be allowed to access that team.
  • Alert and notification policiesAPI call: GET /v2/policies/alertUp to 1,000 alert policies come back per call. For notification policies, use GET /v2/policies/notification?teamId={id}.
  • IntegrationsAPI call: GET /v2/integrationsReturns each integration’s name, type, and settings, but not its API key, webhook URL, or credentials.
  • HeartbeatsAPI call: GET /v2/heartbeatsReturns each heartbeat’s name, interval, owner team, and alert settings. Spike has no heartbeat monitoring, so recreate each check in Cronitor or Healthchecks.
  • Personal notification rulesAPI call: GET /v2/users/{id}/notification-rulesReturns each rule’s name, order, timing, and whether it is on. Check whether the phone and SMS steps come back for your account, and plan to set them up again in Spike if they do not.
  • Alert historyAPI call: GET /v2/alertsReturns up to 100 alerts per call. See the limits below.

What you cannot export

  • Integration credentials and webhook URLs.The integration calls leave them out. Each Spike integration gives you its own webhook URL, so point your monitoring tools at those. See the integration guide.
  • Chat connections.The OpsGenie integration API does not cover Slack, so connect Slack or Microsoft Teams again in Spike.
  • One file with everything.There is no single download for cloud accounts, so you pull each type of data with its own call.

Export in four steps

Step 1

Create a read-only API key

In OpsGenie, go to Settings, then App Settings, then API Key Management, and choose Add New API Key. Select Read and Configuration Access. Only account owners and admins can create keys, and a team integration key will not work for account-wide requests. See Atlassian’s guide to API keys.

Step 2

Use the right address

Send requests to https://api.opsgenie.com, or to https://api.eu.opsgenie.com if your account is in the EU. Add the header Authorization: GenieKey YOUR_API_KEY to every request.

Step 3

Pull each type of data

Run the calls in the table above, and save every response as a JSON file. For example: curl -H "Authorization: GenieKey $KEY" "https://api.opsgenie.com/v2/schedules?expand=rotation" -o schedules.json.

Step 4

Page through the long lists

Users and alerts come back in pages. Add limit and offset to the call, and follow the paging links in each response until they run out.

Limits to plan for

  • Alert history stops at 20,000.The alerts call returns at most 100 alerts per request, and offset plus limit must stay below 20,000. To go further back, split the export into smaller searches with the query parameter.
  • Expect throttling.OpsGenie answers with HTTP 429 when you send too many requests. Wait, then retry with exponential backoff, for example 2 to the power of the attempt number times 200 milliseconds. See OpsGenie’s rate limit page.
  • Some data takes one call at a time.Contact details need one call for each user, and routing rules need one call for each team.

What to do with your export

Keep the JSON files as your record of how OpsGenie was set up, even after you cancel it. Use them with the concept mapping sheet to build the same setup in Spike, and the migration checklist to track your progress. Send us your rotations and escalation policies and the Spike team sets them up with you.

Common questions

  • Can I export from the OpsGenie dashboard?

    You can download a schedule as an iCalendar (.ics) file from its page. For everything else, use the API calls above.

  • Does this work for EU accounts?

    Yes. Use https://api.eu.opsgenie.com in place of https://api.opsgenie.com.

  • Should I still export if I am moving to Jira Service Management?

    Atlassian’s migration tool moves your alerts, schedules, escalation policies, incident history, and configurations for you. An export is still a useful backup of how OpsGenie was set up.

  • Do I need an export to start in Spike?

    No. You can build your setup in Spike at any time. The export is your record of how OpsGenie was set up, and your alert history lives only in OpsGenie.

Moving off OpsGenie?
You don’t have to figure it out alone.

Book a call and we will help you map your schedules, escalation policies, and integrations.

Spike incident timeline showing an alert escalating through on-call responders

Enter to open, arrows to move, Esc to close

Browse everything on spike.sh