Developer platform

OlmoEarth API

Developer overview for Allen Institute for Artificial Intelligence (Ai2), including API access, pricing, SDK support, endpoints, capabilities and platform policies.

API key Required
Primary API OlmoEarth API
SDK support No provider-specific official SDK was identified. The interactive API browser can generate client code for common languages and libraries; standard HTTP clients are suitable.
Rate limits Public numeric rate limits for OlmoEarth API endpoints were not identified. The platform uses authenticated account access; consult the account-specific documentation or support channel for quota details.
Platform

API overview

Endpoints

API access

Base URL https://olmoearth.allenai.org/api/v1/
Primary API OlmoEarth API
Pricing

API pricing

Pricing model Request-based platform access; no public standard API pricing identified

OlmoEarth access is available by account request. No public per-token, per-request, or subscription API price was identified in the reviewed official documentation.

Developer experience

SDKs & usability

SDKs No provider-specific official SDK was identified. The interactive API browser can generate client code for common languages and libraries; standard HTTP clients are suitable.
Ease of use Moderate for developers familiar with REST and GeoJSON; API keys, interactive documentation, and generated client examples are provided, but access is account-based and the API is specialized for Earth-observation workflows.
Documentation Good and current for authentication, area management, platform concepts, and API discovery. The interactive API browser provides endpoint schemas and generated examples, while some operational details such as quotas and pricing are not publicly specified.
Latency No public latency target, service tier, or SLA was identified. Workloads may vary by geospatial area, dataset, model, and inference operation.
Features

API capabilities

✓ Fine-tuning
✓ Playground
Feature notes

OlmoEarth is Ai2's current clearly documented first-party hosted API platform. It provides authenticated REST endpoints for geographic area management and broader workflows involving dataset creation, fine-tuned model execution, embeddings, and prediction retrieval. The API is specialized for Earth-observation and geospatial machine-learning applications, not a general conversational LLM service. Ai2's open language and multimodal models are primarily offered as downloadable artifacts with documentation for local or self-managed deployment. The interactive OlmoEarth API browser supports endpoint inspection, direct testing, and generated client code. The reviewed official documentation does not verify generic chat streaming, function calling, persistent assistants, structured generative outputs, web search, or generic file upload support for OlmoEarth API.

Examples

API examples

set -euo pipefail

: "${OLMOEARTH_API_KEY:?Set OLMOEARTH_API_KEY first}"

curl --fail-with-body --silent --show-error \
  --request POST \
  "https://olmoearth.allenai.org/api/v1/areas" \
  --header "Authorization: Bearer ${OLMOEARTH_API_KEY}" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "Nandi County Research Site",
    "geom": {
      "type": "Polygon",
      "coordinates": [[
        [35.1000, 0.1000],
        [35.2000, 0.1000],
        [35.2000, 0.2000],
        [35.1000, 0.2000],
        [35.1000, 0.1000]
      ]]
    }
  }' | python3 -c 'import json,sys; data=json.load(sys.stdin); print(json.dumps(data, indent=2))'
# Install: pip install requests
import json
import os
import sys

import requests

api_key = os.environ.get("OLMOEARTH_API_KEY")
if not api_key:
    raise SystemExit("Set OLMOEARTH_API_KEY before running this script")

url = "https://olmoearth.allenai.org/api/v1/areas"
payload = {
    "name": "Nandi County Research Site",
    "geom": {
        "type": "Polygon",
        "coordinates": [[
            [35.1000, 0.1000],
            [35.2000, 0.1000],
            [35.2000, 0.2000],
            [35.1000, 0.2000],
            [35.1000, 0.1000],
        ]],
    },
}

try:
    response = requests.post(
        url,
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json",
        },
        json=payload,
        timeout=60,
    )
    response.raise_for_status()
except requests.HTTPError as exc:
    print(f"HTTP error: {exc}", file=sys.stderr)
    print(response.text, file=sys.stderr)
    raise SystemExit(1)
except requests.RequestException as exc:
    print(f"Request failed: {exc}", file=sys.stderr)
    raise SystemExit(1)

data = response.json()
records = data.get("records", [])
if records:
    print("Created area:", records[0].get("id"))
else:
    print(json.dumps(data, indent=2))
// Install: npm install axios
import axios from "axios";

const apiKey = process.env.OLMOEARTH_API_KEY;
if (!apiKey) {
  throw new Error("Set OLMOEARTH_API_KEY before running this script");
}

const payload = {
  name: "Nandi County Research Site",
  geom: {
    type: "Polygon",
    coordinates: [[
      [35.1000, 0.1000],
      [35.2000, 0.1000],
      [35.2000, 0.2000],
      [35.1000, 0.2000],
      [35.1000, 0.1000]
    ]]
  }
};

try {
  const response = await axios.post(
    "https://olmoearth.allenai.org/api/v1/areas",
    payload,
    {
      headers: {
        Authorization: `Bearer ${apiKey}`,
        "Content-Type": "application/json"
      },
      timeout: 60000
    }
  );

  const records = response.data?.records ?? [];
  if (records.length > 0) {
    console.log("Created area:", records[0].id);
  } else {
    console.log(JSON.stringify(response.data, null, 2));
  }
} catch (error) {
  if (axios.isAxiosError(error)) {
    console.error("Request failed:", error.response?.status, error.response?.data ?? error.message);
  } else {
    console.error("Unexpected error:", error);
  }
  process.exitCode = 1;
}
<?php
$apiKey = getenv('OLMOEARTH_API_KEY');
if (!$apiKey) {
    fwrite(STDERR, "Set OLMOEARTH_API_KEY before running this script\n");
    exit(1);
}

$url = 'https://olmoearth.allenai.org/api/v1/areas';
$payload = [
    'name' => 'Nandi County Research Site',
    'geom' => [
        'type' => 'Polygon',
        'coordinates' => [[
            [35.1000, 0.1000],
            [35.2000, 0.1000],
            [35.2000, 0.2000],
            [35.1000, 0.2000],
            [35.1000, 0.1000],
        ]],
    ],
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
        'Accept: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_THROW_ON_ERROR),
    CURLOPT_TIMEOUT => 60,
]);

$body = curl_exec($ch);
if ($body === false) {
    fwrite(STDERR, 'cURL error: ' . curl_error($ch) . "\n");
    curl_close($ch);
    exit(1);
}

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($body, true);
if ($status < 200 || $status >= 300) {
    fwrite(STDERR, "HTTP $status: $body\n");
    exit(1);
}
if (!is_array($data)) {
    fwrite(STDERR, "Invalid JSON response\n");
    exit(1);
}

if (!empty($data['records'][0]['id'])) {
    echo 'Created area: ' . $data['records'][0]['id'] . PHP_EOL;
} else {
    echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . PHP_EOL;
}
?>
Policies

Data & usage

Data training

Ai2's general responsible-use guidance describes its tools, including models, datasets, APIs, and applications, as intended primarily for research and educational purposes and provided on a free and open basis where applicable. The reviewed OlmoEarth API documentation does not state that customer API submissions are used to train Ai2 foundation models, nor does it provide a complete service-specific training-use policy. Users should consult the OlmoEarth platform agreement, privacy materials, and account terms for current contractual details.

Data retention

The reviewed public OlmoEarth API documentation does not specify a complete retention schedule, deletion SLA, or default storage period for submitted datasets, areas, predictions, or API logs. The platform documentation indicates that areas and other project resources are managed in the account environment; users should consult the current OlmoEarth platform agreement and privacy documentation for service-specific retention and deletion terms.

Rate limits

Public numeric rate limits for OlmoEarth API endpoints were not identified. The platform uses authenticated account access; consult the account-specific documentation or support channel for quota details.

Developer guide

OlmoEarth API: Beginner's Guide to Ai2's Geospatial Developer Platform

OlmoEarth API is Ai2's current first-party hosted developer platform for Earth-observation and geospatial machine-learning workflows. It provides authenticated REST endpoints for managing geographic areas and supports broader workflows involving datasets, fine-tuned models, embeddings, and predictions. Ai2's general Olmo, Molmo, and Tülu models are primarily open releases for local or self-managed deployment rather than a single unified hosted chat API.
OlmoEarth API gives developers a way to build geospatial applications with Ai2's hosted Earth-observation platform. It uses authenticated REST and JSON requests, with GeoJSON areas as a central data structure. This guide explains access, API keys, the first request, available capabilities, pricing, examples, and the important distinction between OlmoEarth's specialized API and Ai2's open models, which developers generally deploy themselves or through a separate hosting provider.
OlmoEarth API is Ai2's hosted REST platform for Earth-observation and geospatial machine-learning workflows. It supports authenticated area management and broader dataset, fine-tuning, embedding, and prediction workflows, while Ai2's general language and multimodal models are mainly open releases for self-managed deployment. The guide covers access, API keys, first requests, pricing, developer tools, capability boundaries, and production considerations.

What is OlmoEarth API and when should you use it?

OlmoEarth API is a hosted REST API from the Allen Institute for Artificial Intelligence, commonly known as Ai2. It is designed for Earth-observation and geospatial machine-learning workflows rather than general conversational AI. A REST API is a web service that applications call over HTTP; requests and responses are exchanged as JSON data.

The platform can be used to manage geographic areas, create datasets, run fine-tuned models, generate embeddings, and retrieve predictions. An area is represented with GeoJSON geometry, such as a Polygon or MultiPolygon using WGS84 coordinates. This makes OlmoEarth relevant to applications that analyze regions on Earth rather than applications that need a general-purpose text assistant.

Ai2's broader developer ecosystem includes open Olmo language models, Molmo multimodal models, Tülu, and related research artifacts. Those models are generally downloaded and run locally or deployed through infrastructure chosen by the developer. Ai2 does not present a single general-purpose hosted language-model API comparable to a standard chat-completions service. Use OlmoEarth when you need its hosted geospatial workflows; use Ai2's open-model documentation when you intend to control the model deployment yourself.

Who is the API for?

OlmoEarth is suited to developers, research teams, and organizations building applications around satellite or other Earth-observation data, geographic regions, geospatial datasets, model fine-tuning, embeddings, and prediction retrieval. Familiarity with HTTP requests, JSON, and basic GeoJSON is helpful, but you do not need to be an expert in machine learning to make an initial API request.

It is a poor fit if your main requirement is a hosted chatbot, generic text generation, a unified image-generation service, or a conventional assistant API with conversation state and tool calling. Ai2's open models may support broader applications when deployed with suitable infrastructure, but those capabilities should not be assumed to be available through OlmoEarth.

Getting access and obtaining an API key

OlmoEarth uses account-based access. Ai2 describes the platform as available now and directs prospective users to request access. After access is granted, authentication uses a bearer token created in OlmoEarth Studio.

API keys can be created, renamed, and revoked from the user's profile. The documentation states that an account can have up to 10 keys. Store the key as a server-side environment variable, such as OLMOEARTH_API_KEY. Do not place it in browser JavaScript, mobile application code, public repositories, or client-side HTML, because anyone who can inspect that code could copy the credential.

The key is sent in an HTTP header using the standard bearer-token format:

Authorization: Bearer YOUR_OLMOEARTH_API_KEY

Open Ai2 model downloads and local execution generally do not require an Ai2 inference API key. Separate access requirements can still apply to particular datasets, gated repositories, hosted demonstrations, or third-party inference services.

Choosing the appropriate Ai2 API or model path

RequirementRecommended pathWhat to expect
Hosted geospatial workflowsOlmoEarth APIAuthenticated REST endpoints for areas and broader dataset, model, embedding, and prediction workflows.
General language-model developmentOpen Olmo releasesDownload and run the models locally or deploy them through infrastructure selected by the developer.
Multimodal model developmentOpen Molmo releasesUse the model artifacts and deployment guidance rather than assuming a unified Ai2-hosted multimodal endpoint.
Hosted inference from another operatorA compatible third-party providerAuthentication, pricing, limits, uptime, and data policies come from that provider.

An OpenAI-compatible server shown in an Ai2 deployment example is not automatically an Ai2-managed endpoint. Before integrating, verify the server operator, base URL, authentication method, available model, service terms, and operational limits.

Making your first OlmoEarth API request

The documented API base URL is https://olmoearth.allenai.org/api/v1/. The following example creates an area with a GeoJSON Polygon. The coordinates use longitude and latitude in WGS84 order, and the polygon closes by repeating its first coordinate.

set -euo pipefail

: "${OLMOEARTH_API_KEY:?Set OLMOEARTH_API_KEY first}"

curl --fail-with-body --silent --show-error 
  --request POST 
  "https://olmoearth.allenai.org/api/v1/areas" 
  --header "Authorization: Bearer ${OLMOEARTH_API_KEY}" 
  --header "Content-Type: application/json" 
  --data '{
    "name": "Nandi County Research Site",
    "geom": {
      "type": "Polygon",
      "coordinates": [[
        [35.1000, 0.1000],
        [35.2000, 0.1000],
        [35.2000, 0.2000],
        [35.1000, 0.2000],
        [35.1000, 0.1000]
      ]]
    }
  }'

Before running it, set the key in your shell:

export OLMOEARTH_API_KEY='replace-with-your-key'

The corresponding Python example uses the widely supported requests HTTP library. It keeps the key outside the source code and applies a timeout so the process does not wait indefinitely for a network response.

# Install: pip install requests
import os
import sys
import requests

api_key = os.environ.get("OLMOEARTH_API_KEY")
if not api_key:
    raise SystemExit("Set OLMOEARTH_API_KEY before running this script")

url = "https://olmoearth.allenai.org/api/v1/areas"
payload = {
    "name": "Nandi County Research Site",
    "geom": {
        "type": "Polygon",
        "coordinates": [[
            [35.1000, 0.1000],
            [35.2000, 0.1000],
            [35.2000, 0.2000],
            [35.1000, 0.2000],
            [35.1000, 0.1000],
        ]],
    },
}

try:
    response = requests.post(
        url,
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json",
        },
        json=payload,
        timeout=60,
    )
    response.raise_for_status()
except requests.HTTPError as exc:
    print(f"HTTP error: {exc}", file=sys.stderr)
    print(response.text, file=sys.stderr)
    raise SystemExit(1)
except requests.RequestException as exc:
    print(f"Request failed: {exc}", file=sys.stderr)
    raise SystemExit(1)

print(response.json())

Understanding the response

A successful request returns JSON from the API. The supplied integration example checks for a records array and reads the identifier of the first created area. The exact response fields should be confirmed in the live API reference, because schemas can change as the platform develops.

Always check the HTTP status before treating a response as successful. In production code, log useful request identifiers and safe error details, but never log the API key. For failed requests, preserve the response body during development because it may explain validation, authentication, or access problems.

After creating an area, the documented area-management operations include retrieving a specific area with GET /areas/{area_id}, searching areas with POST /areas/search, updating one with PUT /areas/{area_id}, and deleting one with DELETE /areas/{area_id}. The interactive API browser can be used to inspect current schemas and try requests.

How pricing and access generally work

No public standard per-token, per-request, or subscription price was identified for OlmoEarth in the reviewed official documentation. Access is request-based through an account, and prospective users may need to request platform access.

Ai2 also does not publish a unified token-pricing table for a general hosted language-model API in the reviewed materials. Open model downloads and self-managed execution may avoid a hosted Ai2 inference charge, but they still require the developer to provide suitable compute, storage, networking, and operations. If a third-party provider hosts an Ai2 model, that provider's pricing and terms apply.

Confirm current commercial terms, quotas, and account-specific conditions before committing a production workload. Do not estimate costs from token pricing used by another provider.

Capabilities: what is and is not documented

The clearest documented OlmoEarth capabilities are:

  • Authenticated REST and JSON requests.
  • Geographic area creation, retrieval, search, update, and deletion.
  • GeoJSON Polygon and MultiPolygon area definitions using WGS84 coordinates.
  • Programmatic dataset creation.
  • Execution of fine-tuned models.
  • Embedding generation.
  • Prediction retrieval.

The reviewed documentation does not verify the following as OlmoEarth features:

  • Chat streaming.
  • Function calling or tool calling.
  • Persistent assistants or conversation memory.
  • Structured text-output schemas or a separate JSON mode.
  • Generic image or file uploads in the way commonly offered by generative AI APIs.
  • Web search.

These unverified items should be treated as unknown rather than as unsupported forever; check the current API reference for changes. Ai2's open models can be used in multimodal or tool-using systems when developers supply the model deployment and surrounding application infrastructure, but that does not establish the same capability for OlmoEarth.

SDKs, API reference, and playground tools

No provider-specific official SDK was identified in the reviewed materials. Standard HTTP clients such as curl, Python requests, JavaScript HTTP libraries, or PHP cURL are therefore practical integration choices.

OlmoEarth's interactive API browser is the main developer aid. It provides endpoint schemas, lets an authenticated user inspect and try requests, and can generate client code for common languages and libraries. Use it to confirm request and response fields instead of copying assumptions from unrelated AI APIs.

The API reference is available at docs.olmoearth.allenai.org/api/. The documentation site and OlmoEarth Studio should be treated as the source of truth for current access requirements and endpoint behavior.

Advanced integration patterns

Manage an area as a resource

A typical application can create an area once, retain the returned identifier, and use that identifier in later workflows. Retrieve the resource when displaying its current state, use the search endpoint when locating existing areas, and update or delete it only after confirming the intended account and area identifier.

curl --fail-with-body --silent --show-error 
  --request GET 
  "https://olmoearth.allenai.org/api/v1/areas/AREA_ID" 
  --header "Authorization: Bearer ${OLMOEARTH_API_KEY}" 
  --header "Accept: application/json"

The exact search payload and response schema should be taken from the current interactive API reference. Avoid inventing fields based on conventions from another geospatial API.

Separate platform operations from application logic

For a production service, keep OlmoEarth calls behind a server-side application layer. That layer can validate GeoJSON before submission, associate platform resource identifiers with internal records, retry safe requests, and prevent users from accessing credentials. It can also distinguish temporary network failures from permanent validation or authorization errors.

Dataset preparation, fine-tuning, embedding generation, and prediction retrieval are separate concerns even when they form one application workflow. Track each operation's status and preserve enough metadata to reproduce which area, dataset, model, and parameters produced a result.

Limits and production considerations

Public numeric rate limits were not identified in the reviewed OlmoEarth documentation. There is also no public latency target, service tier, or service-level agreement identified there. Performance can vary with the geographic area, dataset, model, and inference operation.

Use bounded timeouts, check HTTP status codes, and apply exponential backoff only where retrying is safe. Mutating operations such as creation and updates can produce duplicates if blindly retried after a network timeout, so add application-level idempotency safeguards or reconcile the resource afterward.

The reviewed documentation does not provide a complete retention schedule, deletion service-level agreement, or default storage period for submitted datasets, areas, predictions, or API logs. Review the current platform agreement and privacy documentation before sending sensitive or confidential material. Also check model cards, dataset cards, responsible-use guidance, and license restrictions; some Ai2 artifacts may have academic, noncommercial, or other usage conditions.

Do not assume that a local or third-party deployment has the same uptime, rate limits, streaming behavior, tool support, or data-retention policy as OlmoEarth. Those characteristics belong to the actual service operator.

When OlmoEarth API is a good or poor choice

OlmoEarth is a good choice when an application needs Ai2-hosted geospatial resources and workflows, especially area management, Earth-observation datasets, fine-tuned geospatial models, embeddings, or predictions. It is also a reasonable starting point for a research prototype that can use REST and GeoJSON and does not require a published token-pricing model or public numeric quotas.

It is a poor choice when the core requirement is a general hosted chat API, guaranteed streaming, function calling, persistent assistants, web search, or a documented generic file-upload interface. It may also be unsuitable when an organization needs public SLA commitments, published rate limits, a provider-maintained SDK, or clearly defined data-retention terms that are not available in the reviewed documentation.

The main architectural decision is whether to use a specialized hosted geospatial platform or deploy an open Ai2 model yourself. Make that choice based on the workload, required control, operational budget, data constraints, and the exact capabilities documented for the service you will run.

Sources 8