All skills
secondsky avatar

/sap-ai-core

@620a19a
by Eddiesecondsky/sap-skills456 stars
120

Guides development with SAP AI Core and SAP AI Launchpad for enterprise AI/ML workloads on SAP BTP. Use when: deploying generative AI models, building orchestration workflows with templating/filtering/grounding, implementing RAG with vector databases, managing ML training pipelines with Argo Workflows, configuring content filtering and data masking for PII protection, using the Generative AI Hub for prompt experimentation, managing prompt templates via the Prompt Registry, or integrating AI capabilities into SAP applications. Covers service plans (Free/Standard/Extended), model providers (Azure OpenAI, AWS Bedrock, GCP Vertex AI, Mistral, IBM, Perplexity), orchestration modules, embeddings, tool calling, and structured outputs.

Use this Skill: https://skilld.dev/gh/secondsky/sap-skills/sap-ai-core

This session only. Nothing lands on disk.

referencesapi-reference.md

≈3.2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

SAP AI Core API Reference

Complete API reference for SAP AI Core.

Documentation Source: https://github.com/SAP-docs/sap-artificial-intelligence/tree/main/docs/sap-ai-core


Authentication

OAuth Token Endpoint

curl -X POST "https://<id-zone>.authentication.<region>.hana.ondemand.com/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET"

Required Headers

Header Description
Authorization Bearer <token>
AI-Resource-Group Resource group name (e.g., default)
Content-Type application/json

Base URLs

Environment URL Pattern
AI API https://api.ai.prod.<region>.hana.ondemand.com
Inference https://api.ai.prod.<region>.hana.ondemand.com/v2/inference/deployments/<deployment-id>
OAuth https://<id-zone>.authentication.<region>.hana.ondemand.com/oauth/token

Regions: eu10, eu11, us10, us21, jp10, ap10, ap11


API Versioning

All endpoints use the /v2/* versioned routes:

  • /v2/lm/* - Language model operations
  • /v2/inference/* - Inference deployments
  • /v2/admin/* - Administrative operations (secrets, repositories)

Scenarios

List Scenarios

GET $AI_API_URL/v2/lm/scenarios

Response:

{
  "count": 2,
  "resources": [
    {
      "id": "foundation-models",
      "name": "Foundation Models",
      "description": "Access to generative AI models"
    },
    {
      "id": "orchestration",
      "name": "Orchestration",
      "description": "Unified model access with pipeline features"
    }
  ]
}

Models

List Available Models

GET $AI_API_URL/v2/lm/scenarios/foundation-models/models

Response:

{
  "count": 50,
  "resources": [
    {
      "model": "gpt-4o",
      "accessType": "Remote",
      "displayName": "GPT-4o",
      "provider": "azure-openai",
      "executableId": "azure-openai",
      "versions": [
        {
          "name": "2024-05-13",
          "isLatest": true,
          "capabilities": ["text-generation", "chat"],
          "contextLength": 128000,
          "inputCost": 5.0,
          "outputCost": 15.0,
          "isStreamingSupported": true
        }
      ]
    }
  ]
}

Configurations

Create Configuration

POST $AI_API_URL/v2/lm/configurations

Request Body:

{
  "name": "my-config",
  "executableId": "azure-openai",
  "scenarioId": "foundation-models",
  "parameterBindings": [
    {"key": "modelName", "value": "gpt-4o"},
    {"key": "modelVersion", "value": "latest"}
  ],
  "inputArtifactBindings": []
}

Response:

{
  "id": "abc123-def456-ghi789",
  "message": "Configuration created"
}

List Configurations

GET $AI_API_URL/v2/lm/configurations

Query Parameters:

Parameter Description
scenarioId Filter by scenario
executableId Filter by executable
$top Limit results
$skip Skip results

Get Configuration

GET $AI_API_URL/v2/lm/configurations/{configurationId}

Delete Configuration

DELETE $AI_API_URL/v2/lm/configurations/{configurationId}

Deployments

Create Deployment

POST $AI_API_URL/v2/lm/deployments

Request Body:

{
  "configurationId": "<configuration-id>",
  "ttl": "24h"
}

TTL Format: Natural numbers with units: m (minutes), h (hours), d (days)

  • Valid: 5m, 2h, 7d
  • Invalid: 4.5h, 4h30m (fractional and combined units not supported)
  • Tip: Convert combined durations to a single unit (e.g., 270m instead of 4h30m)

Response:

{
  "id": "d12345-abcd-efgh",
  "deploymentUrl": "https://...",
  "status": "PENDING",
  "message": "Deployment created"
}

Get Deployment

GET $AI_API_URL/v2/lm/deployments/{deploymentId}

Response:

{
  "id": "d12345-abcd-efgh",
  "configurationId": "c12345-abcd",
  "configurationName": "my-config",
  "scenarioId": "foundation-models",
  "status": "RUNNING",
  "statusMessage": "",
  "deploymentUrl": "https://...",
  "createdAt": "2024-01-15T10:00:00Z",
  "modifiedAt": "2024-01-15T10:05:00Z"
}

Deployment Statuses

Status Description
UNKNOWN Initial state
PENDING Starting up
RUNNING Active, serving requests
STOPPING Shutting down
STOPPED Inactive
DEAD Failed

List Deployments

GET $AI_API_URL/v2/lm/deployments

Update Deployment

PATCH $AI_API_URL/v2/lm/deployments/{deploymentId}

Request Body:

{
  "configurationId": "<new-configuration-id>"
}

Stop Deployment

PATCH $AI_API_URL/v2/lm/deployments/{deploymentId}

Request Body:

{
  "targetStatus": "STOPPED"
}

Delete Deployment

DELETE $AI_API_URL/v2/lm/deployments/{deploymentId}

Executions

Create Execution

POST $AI_API_URL/v2/lm/executions

Request Body:

{
  "configurationId": "<configuration-id>"
}

Get Execution

GET $AI_API_URL/v2/lm/executions/{executionId}

Execution Statuses

Status Description
UNKNOWN Initial state
PENDING Queued
RUNNING Executing
COMPLETED Finished successfully
DEAD Failed
STOPPED Manually stopped

List Executions

GET $AI_API_URL/v2/lm/executions

Stop Execution

PATCH $AI_API_URL/v2/lm/executions/{executionId}

Request Body:

{
  "targetStatus": "STOPPED"
}

Delete Execution

DELETE $AI_API_URL/v2/lm/executions/{executionId}

Get Execution Logs

GET $AI_API_URL/v2/lm/executions/{executionId}/logs

Artifacts

Register Artifact

POST $AI_API_URL/v2/lm/artifacts

Request Body:

{
  "name": "training-data",
  "kind": "dataset",
  "url": "ai://<object-store>/<path>",
  "scenarioId": "<scenario-id>",
  "description": "Training dataset"
}

Artifact Kinds:

  • dataset: Training data
  • model: Trained model
  • resultset: Inference results
  • other: Other artifacts

Get Artifact

GET $AI_API_URL/v2/lm/artifacts/{artifactId}

List Artifacts

GET $AI_API_URL/v2/lm/artifacts

Resource Groups

Create Resource Group

POST $AI_API_URL/v2/admin/resourceGroups

Request Body:

{
  "resourceGroupId": "my-resource-group"
}

List Resource Groups

GET $AI_API_URL/v2/admin/resourceGroups

Delete Resource Group

DELETE $AI_API_URL/v2/admin/resourceGroups/{resourceGroupId}

Secrets

Create Generic Secret

POST $AI_API_URL/v2/admin/secrets

Request Body:

{
  "name": "my-secret",
  "data": {
    "key1": "value1",
    "key2": "value2"
  }
}

Create Object Store Secret

POST $AI_API_URL/v2/admin/objectStoreSecrets

AWS S3:

{
  "name": "default",
  "type": "S3",
  "pathPrefix": "my-bucket/path",
  "data": {
    "AWS_ACCESS_KEY_ID": "<key>",
    "AWS_SECRET_ACCESS_KEY": "<secret>"
  }
}

List Secrets

GET $AI_API_URL/v2/admin/secrets

Delete Secret

DELETE $AI_API_URL/v2/admin/secrets/{secretName}

Meta API

Get Runtime Capabilities

GET $AI_API_URL/lm/meta

Response:

{
  "capabilities": {
    "logs.executions": true,
    "logs.deployments": true,
    "multitenant": true,
    "shareable": false,
    "staticDeployments": true,
    "userDeployments": true,
    "userExecutions": true,
    "timeToLiveDeployments": true,
    "analytics": true,
    "bulkUpdates": true,
    "executionSchedules": true
  },
  "limits": {
    "deployments.maxRunningCount": 10,
    "executions.maxRunningCount": 10,
    "minimumFrequencyHour": 1,
    "timeToLiveDeployments.minimum": "5m",
    "timeToLiveDeployments.maximum": "90d"
  },
  "extensions": {
    "analytics": "1.0",
    "metrics": "1.0",
    "resourceGroups": "1.0",
    "dataset": "1.0"
  }
}

Orchestration API

Chat Completion

POST $ORCHESTRATION_URL/v2/completion

Request Body:

{
  "config": {
    "module_configurations": {
      "llm_module_config": {
        "model_name": "gpt-4o",
        "model_version": "latest",
        "model_params": {
          "max_tokens": 1000,
          "temperature": 0.7
        }
      },
      "templating_module_config": {
        "template": [
          {"role": "system", "content": "{{?system}}"},
          {"role": "user", "content": "{{?user}}"}
        ]
      }
    }
  },
  "input_params": {
    "system": "You are a helpful assistant.",
    "user": "Hello!"
  }
}

Streaming Completion

POST $ORCHESTRATION_URL/v2/completion

Request Body:

{
  "config": {
    "module_configurations": {
      "llm_module_config": {
        "model_name": "gpt-4o",
        "model_version": "latest",
        "model_params": {
          "stream": true
        }
      },
      "templating_module_config": {
        "template": [{"role": "user", "content": "{{?prompt}}"}]
      }
    }
  },
  "input_params": {"prompt": "Tell me a story"}
}

Embeddings

POST $ORCHESTRATION_URL/v2/embeddings

Request Body:

{
  "config": {
    "module_configurations": {
      "embedding_module_config": {
        "model_name": "text-embedding-3-large",
        "model_version": "latest",
        "model_params": {
          "encoding_format": "float",
          "dimensions": 1024
        }
      }
    }
  },
  "input": ["Text to embed"]
}

Grounding API

Create Pipeline

POST $AI_API_URL/v2/lm/groundingPipelines

Request Body (SharePoint):

{
  "name": "hr-docs-pipeline",
  "configuration": {
    "dataSource": {
      "type": "sharepoint",
      "configuration": {
        "siteUrl": "https://company.sharepoint.com/sites/HR",
        "folderPath": "/Documents/Policies"
      }
    },
    "secretName": "sharepoint-secret"
  }
}

List Pipelines

GET $AI_API_URL/v2/lm/groundingPipelines

Delete Pipeline

DELETE $AI_API_URL/v2/lm/groundingPipelines/{pipelineId}

Error Responses

Standard Error Format

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message",
    "requestId": "req-12345",
    "target": "deployments"
  }
}

Common Error Codes

Code HTTP Status Description
UNAUTHORIZED 401 Invalid or expired token
FORBIDDEN 403 Missing permissions or quota exceeded
NOT_FOUND 404 Resource not found
CONFLICT 409 Resource already exists
QUOTA_EXCEEDED 429 Rate limit or quota exceeded
INTERNAL_ERROR 500 Server error

Bulk Operations

Bulk Update Deployments

PATCH $AI_API_URL/v2/lm/deployments

Request Body:

{
  "deployments": [
    {"id": "dep1", "targetStatus": "STOPPED"},
    {"id": "dep2", "targetStatus": "STOPPED"}
  ]
}

Limit: 100 items per request

Bulk Delete Deployments

DELETE $AI_API_URL/v2/lm/deployments

Request Body:

{
  "deploymentIds": ["dep1", "dep2", "dep3"]
}

Schedules

Create Schedule

POST $AI_API_URL/v2/lm/executionSchedules

Request Body:

{
  "configurationId": "<config-id>",
  "cron": "0 0 * * *",
  "start": "2024-01-01T00:00:00Z",
  "end": "2024-12-31T23:59:59Z"
}

Cron Format: minute hour day month weekday

List Schedules

GET $AI_API_URL/v2/lm/executionSchedules

Delete Schedule

DELETE $AI_API_URL/v2/lm/executionSchedules/{scheduleId}

Documentation Links

Source: SKILL.md on GitHub

1 alert16d5 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    This skill provides a comprehensive documentation suite and template library for developing with SAP AI Core and SAP AI Launchpad on the SAP Business Technology Platform (BTP). It includes detailed guidance on model orchestration, RAG (Retrieval-Augmented Generation), and ML training pipelines. The skill emphasizes security best practices, including content filtering and data masking, and no malicious patterns were identified.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

  • Runlayer6mo

    9/14 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 620a19a. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 weeks ago.

Activeupdated 2 months ago
Other metadata
metadata
{
  "maintainer": "Eduard Jiglau",
  "maintainer_email": "hello@sap-ai-skills.com",
  "website": "https://sap-ai-skills.com",
  "version": "2.4.1",
  "last_verified": "2026-06-12",
  "production_tested": "No; documentation-audited only, no live tenant/runtime evidence",
  "runtime_verification": "pending tenant evidence"
}

README badge

README badge for secondsky/sap-skills/sap-ai-core