Get a purchase order
Catalog, quotes, checkout and order tracking.
GET /api/v1/orders/{orderId}Permission: orders:read
Scope: orders:read. Replace orderId with the UUID returned by checkout. Returns only an order owned by the token account; malformed or foreign IDs return 404. paid means payment confirmed but activation pending. active records completion of activation; consult /api/v1/dids for current possession. Expired/closed orders have no payment instructions.
Payment confirmation applies only to the payment associated with the requested order. Generating a QR code or authorizing recurring payments does not mean payment is complete. If your bank shows a completed payment while the order is still awaiting payment, check the same order and contact support with its ID; do not pay again.
While an account is under security review, reads and operations are blocked with HTTP 403 and code account_security_review, including previously issued tokens. Do not bypass the restriction or retry automatically. Access resumes after administrative release; other limits and restrictions still apply. Pending webhooks and events during the restriction are suppressed without automatic replay. Billing, due dates and expiration follow existing rules. Follow the review at https://novodid.com/seguranca/atendimento. Only the linked security ticket can be read and answered, including attachments, on the authenticated website. Other tickets and the public API remain blocked. The customer must wait for the first staff message and may send only one reply to each new staff message, including requested attachments.
Success response (200)
{
"order": {
"id": "11111111-1111-4111-8111-111111111111",
"didId": 1234,
"quantity": 1,
"status": "awaiting_payment",
"paymentMethod": "pix",
"currency": "BRL",
"amount": 1499,
"createdAt": "2026-09-23T15:00:00.000Z",
"expiresAt": "2026-09-23T15:15:00.000Z",
"checkoutUrl": null,
"pix": {
"copyPaste": "PIX_COPY_AND_PASTE_EXAMPLE",
"qrCodeDataUrl": "data:image/png;base64,EXAMPLE"
}
}
}Error example
{
"error": {
"code": "order_not_found",
"message": "Pedido não encontrado."
}
}curl
curl -X GET \
-H "Authorization: Bearer $NOVODID_API_TOKEN" \
"https://novodid.com/api/v1/orders/{orderId}"Node
const response = await fetch("https://novodid.com/api/v1/orders/{orderId}", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.NOVODID_API_TOKEN}`
}
});
const payload = await response.json();
if (!response.ok) {
throw new Error(payload.error?.message || "Erro na API NovoDID");
}
console.log({ status: response.status });Python
import os
import requests
response = requests.get(
"https://novodid.com/api/v1/orders/{orderId}",
headers={"Authorization": f"Bearer {os.environ['NOVODID_API_TOKEN']}"},
timeout=30,
)
payload = response.json()
response.raise_for_status()
print({"status": response.status_code})Go
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://novodid.com/api/v1/orders/{orderId}", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("NOVODID_API_TOKEN"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
_, _ = io.Copy(io.Discard, res.Body)
if res.StatusCode >= 300 {
panic(fmt.Sprintf("NovoDID API HTTP %d", res.StatusCode))
}
fmt.Println(res.StatusCode)
}Rust
use reqwest::blocking::Client;
use std::env;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new();
let response = client
.get("https://novodid.com/api/v1/orders/{orderId}")
.bearer_auth(env::var("NOVODID_API_TOKEN")?)
.send()?;
let status = response.status();
let _payload = response.text()?;
if !status.is_success() {
return Err(format!("NovoDID API HTTP {}", status).into());
}
println!("HTTP {}", status);
Ok(())
}PHP
<?php
$ch = curl_init("https://novodid.com/api/v1/orders/{orderId}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("NOVODID_API_TOKEN")
],
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($response === false || $status >= 300) {
throw new RuntimeException("NovoDID API HTTP " . $status);
}
echo $status . PHP_EOL;Ruby
require "net/http"
uri = URI("https://novodid.com/api/v1/orders/{orderId}")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch("NOVODID_API_TOKEN")}"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
raise "NovoDID API HTTP #{response.code}" unless response.is_a?(Net::HTTPSuccess)
puts response.codeC#
using System.Net.Http.Headers;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://novodid.com/api/v1/orders/{orderId}");
request.Headers.Authorization = new AuthenticationHeaderValue(
"Bearer",
Environment.GetEnvironmentVariable("NOVODID_API_TOKEN")
);
using var response = await client.SendAsync(request);
var payload = await response.Content.ReadAsStringAsync();
response.EnsureSuccessStatusCode();
Console.WriteLine(response.StatusCode);
