> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo-platform/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo-platform/_mcp/server.

# Ingest Otlp Traces

POST https://host.com/apis/intake/v2/workspaces/{workspace}/ingest/otlp/v1/traces

Reference: https://docs.nvidia.com/nemo-platform/nemo-platform/documentation/reference/api-reference/ingest/otlp-traces-apis-intake-v-2-workspaces-workspace-ingest-otlp-v-1-traces-post

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: Nemo Platform API
  version: 1.0.0
paths:
  /apis/intake/v2/workspaces/{workspace}/ingest/otlp/v1/traces:
    post:
      operationId: >-
        otlp-traces-apis-intake-v-2-workspaces-workspace-ingest-otlp-v-1-traces-post
      summary: Ingest Otlp Traces
      tags:
        - subpackage_ingest
      parameters:
        - name: workspace
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngestResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
servers:
  - url: https://host.com
    description: Default
components:
  schemas:
    IngestResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
      title: IngestResponse
    ValidationErrorLocItems:
      oneOf:
        - type: string
        - type: integer
      title: ValidationErrorLocItems
    ValidationError:
      type: object
      properties:
        loc:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorLocItems'
        msg:
          type: string
        type:
          type: string
        input:
          description: Any type
        ctx:
          type: object
          additionalProperties:
            description: Any type
      required:
        - loc
        - msg
        - type
      title: ValidationError
    HTTPValidationError:
      type: object
      properties:
        detail:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
      title: HTTPValidationError

```

## Examples



**Request**

```json
{
  "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
  "spans": [
    {
      "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
      "spanId": "00f067aa0ba902b7",
      "parentSpanId": "b9c7c989f97918e1",
      "name": "GET /api/user",
      "kind": "SPAN_KIND_SERVER",
      "startTimeUnixNano": 1618884477123456800,
      "endTimeUnixNano": 1618884478123456800,
      "attributes": {
        "http.method": "GET",
        "http.url": "https://api.example.com/api/user",
        "http.status_code": 200,
        "net.peer.ip": "192.168.1.1"
      },
      "status": {
        "code": 0,
        "message": "OK"
      }
    }
  ],
  "resource": {
    "service.name": "user-service",
    "service.version": "1.2.3",
    "host.name": "host123"
  }
}
```

**Response**

```json
{
  "errors": [
    "Invalid traceId format: must be a 16-byte hex string"
  ]
}
```

**SDK Code**

```python
import requests

url = "https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces"

payload = {
    "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
    "spans": [
        {
            "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
            "spanId": "00f067aa0ba902b7",
            "parentSpanId": "b9c7c989f97918e1",
            "name": "GET /api/user",
            "kind": "SPAN_KIND_SERVER",
            "startTimeUnixNano": 1618884477123456800,
            "endTimeUnixNano": 1618884478123456800,
            "attributes": {
                "http.method": "GET",
                "http.url": "https://api.example.com/api/user",
                "http.status_code": 200,
                "net.peer.ip": "192.168.1.1"
            },
            "status": {
                "code": 0,
                "message": "OK"
            }
        }
    ],
    "resource": {
        "service.name": "user-service",
        "service.version": "1.2.3",
        "host.name": "host123"
    }
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"traceId":"4bf92f3577b34da6a3ce929d0e0e4736","spans":[{"traceId":"4bf92f3577b34da6a3ce929d0e0e4736","spanId":"00f067aa0ba902b7","parentSpanId":"b9c7c989f97918e1","name":"GET /api/user","kind":"SPAN_KIND_SERVER","startTimeUnixNano":1618884477123456800,"endTimeUnixNano":1618884478123456800,"attributes":{"http.method":"GET","http.url":"https://api.example.com/api/user","http.status_code":200,"net.peer.ip":"192.168.1.1"},"status":{"code":0,"message":"OK"}}],"resource":{"service.name":"user-service","service.version":"1.2.3","host.name":"host123"}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces"

	payload := strings.NewReader("{\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spans\": [\n    {\n      \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n      \"spanId\": \"00f067aa0ba902b7\",\n      \"parentSpanId\": \"b9c7c989f97918e1\",\n      \"name\": \"GET /api/user\",\n      \"kind\": \"SPAN_KIND_SERVER\",\n      \"startTimeUnixNano\": 1618884477123456800,\n      \"endTimeUnixNano\": 1618884478123456800,\n      \"attributes\": {\n        \"http.method\": \"GET\",\n        \"http.url\": \"https://api.example.com/api/user\",\n        \"http.status_code\": 200,\n        \"net.peer.ip\": \"192.168.1.1\"\n      },\n      \"status\": {\n        \"code\": 0,\n        \"message\": \"OK\"\n      }\n    }\n  ],\n  \"resource\": {\n    \"service.name\": \"user-service\",\n    \"service.version\": \"1.2.3\",\n    \"host.name\": \"host123\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spans\": [\n    {\n      \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n      \"spanId\": \"00f067aa0ba902b7\",\n      \"parentSpanId\": \"b9c7c989f97918e1\",\n      \"name\": \"GET /api/user\",\n      \"kind\": \"SPAN_KIND_SERVER\",\n      \"startTimeUnixNano\": 1618884477123456800,\n      \"endTimeUnixNano\": 1618884478123456800,\n      \"attributes\": {\n        \"http.method\": \"GET\",\n        \"http.url\": \"https://api.example.com/api/user\",\n        \"http.status_code\": 200,\n        \"net.peer.ip\": \"192.168.1.1\"\n      },\n      \"status\": {\n        \"code\": 0,\n        \"message\": \"OK\"\n      }\n    }\n  ],\n  \"resource\": {\n    \"service.name\": \"user-service\",\n    \"service.version\": \"1.2.3\",\n    \"host.name\": \"host123\"\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces")
  .header("Content-Type", "application/json")
  .body("{\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spans\": [\n    {\n      \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n      \"spanId\": \"00f067aa0ba902b7\",\n      \"parentSpanId\": \"b9c7c989f97918e1\",\n      \"name\": \"GET /api/user\",\n      \"kind\": \"SPAN_KIND_SERVER\",\n      \"startTimeUnixNano\": 1618884477123456800,\n      \"endTimeUnixNano\": 1618884478123456800,\n      \"attributes\": {\n        \"http.method\": \"GET\",\n        \"http.url\": \"https://api.example.com/api/user\",\n        \"http.status_code\": 200,\n        \"net.peer.ip\": \"192.168.1.1\"\n      },\n      \"status\": {\n        \"code\": 0,\n        \"message\": \"OK\"\n      }\n    }\n  ],\n  \"resource\": {\n    \"service.name\": \"user-service\",\n    \"service.version\": \"1.2.3\",\n    \"host.name\": \"host123\"\n  }\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces', [
  'body' => '{
  "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
  "spans": [
    {
      "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
      "spanId": "00f067aa0ba902b7",
      "parentSpanId": "b9c7c989f97918e1",
      "name": "GET /api/user",
      "kind": "SPAN_KIND_SERVER",
      "startTimeUnixNano": 1618884477123456800,
      "endTimeUnixNano": 1618884478123456800,
      "attributes": {
        "http.method": "GET",
        "http.url": "https://api.example.com/api/user",
        "http.status_code": 200,
        "net.peer.ip": "192.168.1.1"
      },
      "status": {
        "code": 0,
        "message": "OK"
      }
    }
  ],
  "resource": {
    "service.name": "user-service",
    "service.version": "1.2.3",
    "host.name": "host123"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spans\": [\n    {\n      \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n      \"spanId\": \"00f067aa0ba902b7\",\n      \"parentSpanId\": \"b9c7c989f97918e1\",\n      \"name\": \"GET /api/user\",\n      \"kind\": \"SPAN_KIND_SERVER\",\n      \"startTimeUnixNano\": 1618884477123456800,\n      \"endTimeUnixNano\": 1618884478123456800,\n      \"attributes\": {\n        \"http.method\": \"GET\",\n        \"http.url\": \"https://api.example.com/api/user\",\n        \"http.status_code\": 200,\n        \"net.peer.ip\": \"192.168.1.1\"\n      },\n      \"status\": {\n        \"code\": 0,\n        \"message\": \"OK\"\n      }\n    }\n  ],\n  \"resource\": {\n    \"service.name\": \"user-service\",\n    \"service.version\": \"1.2.3\",\n    \"host.name\": \"host123\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
  "spans": [
    [
      "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
      "spanId": "00f067aa0ba902b7",
      "parentSpanId": "b9c7c989f97918e1",
      "name": "GET /api/user",
      "kind": "SPAN_KIND_SERVER",
      "startTimeUnixNano": 1618884477123456800,
      "endTimeUnixNano": 1618884478123456800,
      "attributes": [
        "http.method": "GET",
        "http.url": "https://api.example.com/api/user",
        "http.status_code": 200,
        "net.peer.ip": "192.168.1.1"
      ],
      "status": [
        "code": 0,
        "message": "OK"
      ]
    ]
  ],
  "resource": [
    "service.name": "user-service",
    "service.version": "1.2.3",
    "host.name": "host123"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://host.com/apis/intake/v2/workspaces/workspace/ingest/otlp/v1/traces")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```